Firefox中的JS错误在IE中工作正常

时间:2013-11-04 09:37:09

标签: javascript javascript-events

我有以下方法在IE中工作正常,但我收到以下错误:

TypeError: hdnButton .click is not a function

当我在Firefox中使用它时。

function PopupTest() {
    var hdnButton = document.getElementById('div_btn').firstChild;
    hdnButton.click();
}

有人可以建议如何克服这个问题吗?我无法找到任何解决方案。

2 个答案:

答案 0 :(得分:1)

我的猜测(因为你没有显示html)是你有一些空白(可能是一个换行符)IE忽略了,但是哪个FF作为文本节点返回。如果是这样,你应该能够用以下内容跳过它:

function PopupTest() {
    var hdnButton = document.getElementById('div_btn').firstChild;
    while (hdnButton.nodeType === 3)
        hdnButton = hdnButton.nextSibling;
    hdnButton.click();
}

...通过使用.nodeType属性来测试.firstChild是否为文本节点(3表示文本节点;有关详细信息,请参阅MDN) 。如果是,则需要下一个兄弟并测试其.nodeType,依此类推,直到找到一个不是文本节点的元素。 (当然这假设会有一个。)

或者,如果您知道(非文本节点)第一个孩子应该是什么标记,您可以在此基础上选择它,例如,如果它实际上是<button>元素:

hdnButton = document.getElementById('div_btn').getElementsByTagName("button")[0];
hdnButton.click();

或者,如果您不需要支持IE&lt; = 7:

document.querySelector("#div_btn > :first-child").click();

答案 1 :(得分:0)

检查document.getElementById('div_btn')。firstChild;

如果存在,可能还有其他错误,例如空格,或者在加载DOM之前调用PopupTest()。

尝试:

<body onload="PopupTest()">