亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么獲取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;

}


正在回答

2 回答

onload 事件是整個頁面加載完成后才觸發的 ,

如果你把變量聲明放在外面,

腳本運行時頁面上的元素還沒有加載,

getElementById自然獲取不到元素,顯示為null。


如果你讓<script>作為<body>的最后一個子元素,

那腳本運行前,頁面上的元素都加載完畢,這樣就不會運行出錯了

<body>
????<!--
????各種元素
????-->
????<script>
????????//在頁面元素加載完成后運行腳本
????????
????????var?play?=?document.getElementById('play'),
????????stop?=?document.getElementById('stop');
????????
????????window.onload=function(){
????????????//代碼
????????};
????</script>
</body>


0 回復 有任何疑惑可以回復我~
#1

jazia 提問者

非常感謝!
2016-09-22 回復 有任何疑惑可以回復我~

所以聲明數組,定時器,flag放在外面就可以,因為這些可以不用等頁面加載完

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么獲取id為play得到的變量不能放在最外面,做全局變量呢?我試了這樣,onload函數不能直接使用該變量,為什么

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號