使用id问题获取元素

时间:2009-05-15 15:50:58

标签: javascript dom

我正在修改现有的遗留网页(我不应该修改现有的部分,而是添加),网页使用document.write来编写某些html元素。当我使用

<script type="text/javascript" language="javascript">
   var  v = document.getElementById('td_date_cal_0');
   alert(v);
</script>

v变为null,当我创建按钮并单击

<input type="button" id="mnbutton" onclick="mnLoader();" value="Click Me!" />;
<script type="text/javascript" language="javascript" >
    function mnLoader() {
        var v = document.getElementById("td_date_cal_0");
        alert(v); 
    } <br />

</script>

任何想法,如何在不需要用户操作的情况下获取元素,例如单击?

谢谢, EBE

5 个答案:

答案 0 :(得分:8)

尝试将脚本附加到onloaddocument的{​​{1}}事件。

window

答案 1 :(得分:1)

我猜你要把你的脚本元素放在你想要的元素之前。

解决此问题的最简单方法是将脚本元素放在body元素的END标记之前。

答案 2 :(得分:1)

我预计会发生这种情况,因为脚本在创建ID为“td_date_cal_0”的元素之前运行。

尝试将脚本移动到它正在操作的元素下面,或者将代码连接到document.onload事件。

答案 3 :(得分:0)

@Mathias举了一个很有可能解决问题的例子。您尝试使用document.getElementById尝试访问的元素在您尝试时尚未加载到DOM中。

但是,如果您对能够尽早运行代码感兴趣,更好的解决方案是观察“dom:loaded”事件或DOM ready事件。这比调用 window.onload 更复杂,但Prototype.jsjQuery等框架可以提供帮助。

请参阅this page,其中Michael Sharman谈到了这个特色。

然后您可以编写如下代码:


document.observe(document, 'dom:loaded', initFunction);   

function initFunction()  
{  
  // this code will run as soon as DOM is loaded, 
  // but before any images are loaded
}

显然,如果您不想使用框架,您可以仅使用标准的javascript调用来复制行为,但您必须准备好处理浏览器之间的差异。您可以先查看 onreadystatechanged 事件以及其他浏览器的类似事件(例如 DOMContentLoaded

答案 4 :(得分:0)

以下代码正常工作。

<input type="text" id="xxxx"/>
<input type="button" id="mnbutton" onclick="mnLoader();" value="Click Me!" />;
<script>
        function mnLoader() {
        var v = document.getElementById("xxxx").value;
        alert(v); 
        }
</script>