我有以下方法在IE中工作正常,但我收到以下错误:
TypeError: hdnButton .click is not a function
当我在Firefox中使用它时。
function PopupTest() {
var hdnButton = document.getElementById('div_btn').firstChild;
hdnButton.click();
}
有人可以建议如何克服这个问题吗?我无法找到任何解决方案。
答案 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()">