IE6找不到带getElementById()的Object元素?

时间:2008-12-02 17:03:47

标签: javascript internet-explorer internet-explorer-6 getelementbyid

我正在尝试使用getElementById从我的网页获取一个对象元素(最终我可以用动态创建的对象元素替换它)但它在IE6中返回null

在以下代码中,byId()函数在IE中返回null但在Firefox 3中返回[object HTMLObjectElement]lengthOfByTagName()函数在IE中返回0但是Firefox中的1

我做错了吗?

<html>
<head>
<title>IE doesn't see Object element?</title>
<script type="text/javascript">
function byId()
{
    var video = document.getElementById("VideoPlayer");
    alert(video);

}
function lengthOfByTagName()
{
    var length = document.getElementsByTagName("object").length;
    alert(length);

}
</script>

</head>
<body>
    <object type="" id="VideoPlayer">
        <param name="allowScriptAcess" value="always" />
        <param name="allowfullscreen" value="true" />
        VideoPlayer element
    </object>
    <br>
    <br>
    <a href="#" onclick="javascript:byId()">getElementById("VideoPlayer")</a>
    <br>
    <a href="#" onclick="javascript:lengthOfByTagName()">getElementsByTagName("object").length</a>
</body>
</html>

3 个答案:

答案 0 :(得分:3)

这是因为IE处理&lt; object&gt;的方式。节点相对于DOM。

由于您仍在动态更换,我建议您改为创建一个&lt; div&gt;在哪里需要它并将innerHTML更改为您需要的对象的HTML。

答案 1 :(得分:3)

我刚刚在IE 7上测试并看到了所描述的行为

Internet Explorer不期望<object>标记中的自由文本。使用Debugbar就可以证明IE没有构建正确的DOM树。

请改用此代码

<object type="" id="VideoPlayer">
    <param name="allowScriptAcess" value="always" />
    <param name="allowfullscreen" value="true" />
</object>

它将按预期工作。

答案 2 :(得分:0)

在IE6中,它可能无法正常工作。参考:https://msdn.microsoft.com/en-us/library/ie/ms536437%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 magazine

建议使用 jQuery 来处理大多数情况

jQuery

var video = $("#VideoPlayer");

alert(video);

在编码中试试这个。

相关问题