我有一个带有选择控件的HMTL页面,列出了所有月份。我添加了一个函数来将默认值设置为当前月份。该功能由标签上的onload事件触发。
我已在使用XAMPP安装的apache Web服务器上加载此页面。当我使用FireFox或Microsoft Edge加载页面时,它按预期工作。当我用Chrome加载它时,它没有。除非我点击“停止加载此页面”,否则Chrome上的onload事件不会被触发。我做错了什么?
Page似乎继续尝试加载。除非我点击停止页面,否则它永远不会停止。
根据Vu Huu Cuong的建议,我尝试使用chrome incongito模式,它按预期工作。为什么它不适用于普通模式?!
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function populateSelects(){
var today = new Date();
var m = today.getMonth();
document.getElementById('s_month').getElementsByTagName('option')[m].selected = 'selected';
}
</script>
<title>Page Title</title>
</head>
<body onload="populateSelects()">
<div >
<select id='s_month' name='s_month' >
<option value="january">January</option>
<option value="february">February</option>
<option value="march">March</option>
<option value="april">April</option>
<option value="may">May</option>
<option value="june">June</option>
<option value="july">July</option>
<option value="august">August</option>
<option value="septemeber">Septemeber</option>
<option value="october">October</option>
<option value="november">November</option>
<option value="december">December</option>
</select>
</div>
</body>
</html>
答案 0 :(得分:1)
我无法帮助您使用此方法,但您可以做的是在脚本标记中使用侦听器,而不是在html中。像这样
document.addEventListener("DOMContentLoaded", function(event) {
populateSelects();
});
答案 1 :(得分:0)
你的代码似乎在chrome上工作正常。但是如果问题仍然存在,那可能是因为在解析JavaScript或添加了监听器之前事件已经发生。在这种情况下,您应该在添加侦听器之前检查文档是否已经加载。
if (document.readyState === "complete") populateSelects();
else window.addEventListener("load", populateSelects);
此外,您还可以使用DOMContentLoaded
事件,该事件在解析文档时触发,而不是加载load
所做的事。