為什么獲取id為play得到的變量不能放在最外面,做全局變量呢?我試了這樣,onload函數不能直接使用該變量,為什么
var data = ['Phone5', 'Ipad', '三星筆記本', '佳能相機', '惠普打印機', '謝謝參與', '50元充值卡', '1000元超市購物券'],
timer = null,
flag=0;
window.onload = function() {
var play = document.getElementById('play'),
stop = document.getElementById('stop');//如果放在外面獲取不到
play.onclick = playFun;
stop.onclick= stopFun;
document.onkeyup=function(event){//這里keyup前面有on
event=event||window.event;
if(event.keyCode==13){
if(flag==0){//比較是==
playFun();
flag=1;
}else{
stopFun();
flag=0;
}
}
}
}
function playFun() {
var title = document.getElementById('title'),
play = document.getElementById('play');
clearInterval(timer);
timer = setInterval(function() {
var random = Math.floor(Math.random() * data.length);
title.innerHTML = data[random];
}, 100);
play.style.background="#ccc";
flag=1;
}
function stopFun(){
clearInterval(timer);
var play=document.getElementById('play');
play.style.background="#333";
flag=0;
}
2016-09-21
onload 事件是整個頁面加載完成后才觸發的 ,
如果你把變量聲明放在外面,
腳本運行時頁面上的元素還沒有加載,
getElementById自然獲取不到元素,顯示為null。
如果你讓<script>作為<body>的最后一個子元素,
那腳本運行前,頁面上的元素都加載完畢,這樣就不會運行出錯了
2016-09-22
所以聲明數組,定時器,flag放在外面就可以,因為這些可以不用等頁面加載完