没看懂你这是疑问句还是叙述句,onload事件是表示当页面所有资源加载完毕之后才执行事件内的函数体代码;所以外面也是可以放其他函数的
object.style.top, 只有object定义position( absolute, relative, fixed)才有用, offsetTop 一般指对象与父元素坐标(offsetParent属性指定的父坐标)顶端的距离。
这里确实有一个点击和键盘配合使用的bug,在点击里加上对flag的处理应该就能解决这个bug了
你有添加clearInterval(); 清除定时器吗?在鼠标事件上面添加?
document.onkeyup = function(event){
event = event?event:window.event;//注意这一句,event需要兼容设置
if(event.keyCode==13){//回车键松开事件
if(flag==0){
playFun();
}else{
stopFun();
}
}
}
注意代码中:event = event?event:window.event;//注意这一句,event需要兼容设置
一般会不会是你的图片路径有问题啊 我随便写了个都是没问题的
<script type="text/javascript">
var i;
window.onload = function() {
var img = document.getElementById("myimg");
var j = 1;
i = setInterval(function() {
img.setAttribute("src", j + '.jpg?')
j = j + 1;
if (j > 3) j = 1;
}, 500);
}
</script>
</head>
<body>
<img src="" alt="" id="myimg">
</body>
用JS给开始那个Div加上了点击和键盘事件 所有会有类似button的效果
1、并不需要一开始就清零,不清零也不影响
2、放在window.onload里面是局部变量,其他函数调用不了,所以要放在外面
看你的代码没看出问题,拷了你的代码实测,运行无误,不知道你说的问题是什么,能否补充说明一下,下面是用你的代码实测截图
chrome内核浏览器。页面按F12控制台(console)
你这个我试过,是好的。能运行
在函数最外面要定义timer=null,如下:
var data=['Phone5','Ipad','三星笔记本','佳能相机','惠普打印机','谢谢参与','50元充值卡','1000元超市购物券'],
timer=null,
flag=0;
删去判断按enter键次数中flag=0;和flag=1;在playFun()函数末尾加上flag=1;在stopFun()函数末尾加上flag=0;
按照文本顺序解析,没加载完html就定义变量,会获取不了
你都没写结束按钮的方法怎么可能会起作用。。
加括号为调用该函数,返回值为函数返回值。
不加括号可认为是查看函数完整信息,即查看整个函数体,返回值即整个函数体,不加括号传参相当于传入函数整体。
onload 事件是整个页面加载完成后才触发的 ,
如果你把变量声明放在外面,
脚本运行时页面上的元素还没有加载,
getElementById自然获取不到元素,显示为null。
如果你让<script>作为<body>的最后一个子元素,
那脚本运行前,页面上的元素都加载完毕,这样就不会运行出错了
<body> <!-- 各种元素 --> <script> //在页面元素加载完成后运行脚本 var play = document.getElementById('play'), stop = document.getElementById('stop'); window.onload=function(){ //代码 }; </script> </body>
问题已经,解决了,谢谢各位朋友的帮助
解决方案:
/*设置文字不能被选中 以下为css样式*/
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
stop按钮,触发就运行stopFun,即停止抽奖
playFun函数里var title=document.getElementById('title'),最后是分号不是逗号
//js可以通过元素ID直接访问元素,也可以通过document.getElementById('play')的方式访问。 //第一种方式不推荐,不是标准里面的,将来不一定支持。 //至于这里stop为什么获取不到,是因为js默认已经定义了一个stop()函数; //你可以做以下尝试: //1.删除id=stop的span,直接在window.onload中alert(stop),会看到stop是一个function, //输出的内容是:function stop(){[native code]} // window.onload=function(){ alert(stop); }; // //2.修改span的id为stop外的其他值,比如gstop,效果就跟play一样都能获取到。
通俗说就是window.onload就是页面加载后里面的函数都开始启用了。全局变量慢了一步了。onload里面的函数要用变量的时候却找不到。
被调用的函数在script脚本中无论你放在哪都可以被调用的到,比如
<script>
add(1,2);
function add(a,b){
var s=a+b;
alert(s);
}
</script>
还是
<script>
function add(a,b){
var s=a+b;
alert(s);
}
add(1,2);
</scritp>
或者这样
<script>
function add(a,b){
var s=a+b;
alert(s);
}
</scritp>
<scritp>add(1,2);</script>
但是不能这样
<scritp>add(1,2);</script>
<script>
function add(a,b){
var s=a+b;
alert(s);
}
</scritp>
另外就你说的这个问题我还尝试了函数套函数,即闭包
var c=a();
c(1,2);
function a(){
function add(a,b){
var s=a+b;
alert(s);
}
return add;
}
闭包中var c=a();c(1,2);这一段代码和add(1,2);这段代码一样 你可以放在任意位置 除了之前说的那种情况
position: absolute;
top:
left:
right:
绝对布局相对于父元素来设置
我刚才试了一下,可以的,控制台显示出13了
我知道了!!!因为JavaScript里的function函数的都是先定义的,它是需要被调用后才会执行,然后在window.onload里调用它的时候页面是加载好了的,所以document.getElementById('idName'); 是可以用的!
window.onload 中定义的是 window.onload 函数的 局部变量 其他的函数无法使用
所以要重新定义 局部变量
用鼠标点击开始的时候也设置一个flag,将其置为0,点击后置为1,这是再用键盘输入时就会判断flag为1,从而执行stop函数