為什么獲取id為play得到的變量不能放在最外面,做全局變量呢?我試了這樣,onload函數(shù)不能直接使用該變量,為什么
var data = ['Phone5', 'Ipad', '三星筆記本', '佳能相機(jī)', '惠普打印機(jī)', '謝謝參與', '50元充值卡', '1000元超市購(gòu)物券'],
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 事件是整個(gè)頁(yè)面加載完成后才觸發(fā)的 ,
如果你把變量聲明放在外面,
腳本運(yùn)行時(shí)頁(yè)面上的元素還沒(méi)有加載,
getElementById自然獲取不到元素,顯示為null。
如果你讓<script>作為<body>的最后一個(gè)子元素,
那腳本運(yùn)行前,頁(yè)面上的元素都加載完畢,這樣就不會(huì)運(yùn)行出錯(cuò)了
2016-09-22
所以聲明數(shù)組,定時(shí)器,flag放在外面就可以,因?yàn)檫@些可以不用等頁(yè)面加載完