我不明白如何很好地操纵DOM。我用过
document.getElementById('someid').innerHTML = "HI";
在其他地方,它工作正常。但是当我在我的网页上添加一个计时器时,我无法使用上面的内容来更改某些文本(计时器)。所以......我很困惑。你们在我遇到的其他问题上帮助了我...我在讨厌你之前研究了很多但是我很难过。沮丧。
signupForm.php中的- SNIPPIT
<title>Perry Computer Services - Signup</title>
<script src="js/commonUtils.js" type="text/javascript"></script>
<script src="js/validation.js" type="text/javascript"></script>
<script src="js/timers.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">window.onload = CreateTimer(30);</script>
在timers.js中
function CreateTimer(Time)
{
alert("Timer created:" + Time);
document.getElementById('debug1').innerHTML = "WORKS";
alert("We never get here.");
}
signupForm.php中的- SNIPPIT
<form name="form1" method="post" action="signupForm.php?calling_page=validateform" accept-charset="utf-8">
<table border="0" align="center">
<tr class="table_top">
<td class="tbl_col1"><div align="right" id="debug1"></div></td>
<td class="tbl_col2"><div align="left" id="debug2"></div></td>
这是我很困惑的事情。我有另一个名为validation.js的.js文件,我在上面使用完全相同的document.getElementById,它可以工作!我不明白!
在validation.js中我经常修改DOM,效果很好!是否有效,因为当我通过Tab键更改字段到下一个字段 这是一个SCOPE问题吗? 如果有人不知道我做错了什么我会试着砍掉我的validation.js并把它粘在这里,但它很大。为什么1个函数可以工作而另一个文件在另一个文件中不起作用?
答案 0 :(得分:4)
您立即致电CreateTimer
并将其返回值(undefined
)分配给onload
。
在您调用它时,具有指定ID的元素不存在,并且该行发生错误并阻止脚本继续运行。
将功能分配给onload。
window.onload = function () { CreateTimer(30); };
答案 1 :(得分:1)
这是一个时间问题。请注意,警报时页面是空白的,并且还注意到如果从控制台运行命令后一切正常。您正在尝试修改尚未加载的元素。原因是onload没有正确设置 - 你在适当的时间之前调用了CreateTimer。
当你遇到这些问题时,试图找出问题的哪一部分是大问题会有所帮助。例如:
alert("Timer created:" + Time);
alert(document.getElementById('debug1'));
alert(document.getElementById('debug1').innerHTML);
此外,使用console.log()
代替alert()
也可以为您节省一些挫折感。