我都不知道怎么描述这个问题:「Window.location.href=js变量); 」(业余爱好,初学,勿喷)代码如下: <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贡献1893条经验 获得超10个赞
这是因为你这个address并不是全局变量,当setInterval中的计时器触发运行myInterval函数时,它需要在全局查找这个address变量,而它并不存在,所以出错。
传统方法是把address设为全局变量,即在window.onload的上面加一行 var address; 然后在赋值的时候 address = request... 即可(不需要var了);
也可以这样:把 setInterval("myInterval()", stays ); 改为(myInterval函数不需要了):
setTimeout("location.href='"+address+"';", stays);
此外还可以使用闭包的方法,以及ES6的let,这些就不多说了。
添加回答
举报
0/150
提交
取消