哆啦的時(shí)光機(jī)
2022-07-26 19:15:22
我都不知道怎么描述這個(gè)問題:「Window.location.href=js變量); 」(業(yè)余愛好,初學(xué),勿噴)代碼如下: <script> window.onload = function () { var url = window.location.search; var request = new Object(); if (url.indexOf("?") != -1) { var str = url.substr(1); var strs = str.split("&"); for (var i = 0; i < strs.length; i++) { request[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]); } } var keyword = document.getElementById("key"); var stays = request["stays"]); var address = request["address"]); keyword.innerHTML = request["keyword"]; setInterval("myInterval()", stays ); function myInterval() { window.location.href= address ; } } </script>
1 回答
白豬掌柜的
TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
這是因?yàn)槟氵@個(gè)address并不是全局變量,當(dāng)setInterval中的計(jì)時(shí)器觸發(fā)運(yùn)行myInterval函數(shù)時(shí),它需要在全局查找這個(gè)address變量,而它并不存在,所以出錯(cuò)。
傳統(tǒng)方法是把a(bǔ)ddress設(shè)為全局變量,即在window.onload的上面加一行 var address; 然后在賦值的時(shí)候 address = request... 即可(不需要var了);
也可以這樣:把 setInterval("myInterval()", stays ); 改為(myInterval函數(shù)不需要了):
setTimeout("location.href='"+address+"';", stays);
此外還可以使用閉包的方法,以及ES6的let,這些就不多說了。
添加回答
舉報(bào)
0/150
提交
取消
