1

我有一些全局变量会增加一个数字。

var i = 0;  
var num = (i-1)+2;  
var i = num; 

然后,我有一个检查数字并显示我的 HTML 的函数。

function showChild(){

if(num===1){
    document.getElementById("childFirst00").style.display = "block";
    document.getElementById("childLast00").style.display = "block";
    document.getElementById("deleteChild00").style.display = "block";
    num++;
}else if(num===2){
    document.getElementById("childFirst01").style.display = "block";
    document.getElementById("childLast01").style.display = "block";
    document.getElementById("deleteChild01").style.display = "block";
    num++;
}else if(num===3){
    document.getElementById("childFirst02").style.display = "block";
    document.getElementById("childLast02").style.display = "block";
    document.getElementById("deleteChild02").style.display = "block";
    num++;  
}else if(num===4){
    alert("Please Contact The Rectory If You Need To Add More Children");   
}
}

所有这些都可以正常工作。
但是,当我单击调用下一个函数的按钮时,在 Firebug 中 deleteChild00出现错误。not enough arguments

function removeChild(){

if(num===2){
    document.getElementById("childFirst00").style.display = "none";
    document.getElementById("childLast00").style.display = "none";
    document.getElementById("deleteChild00").style.display = "none";
    num--;
}else if(num===3){
    document.getElementById("childFirst01").style.display = "none";
    document.getElementById("childLast01").style.display = "none";
    document.getElementById("deleteChild01").style.display = "none";
    num--;
}else if(num===4){
    document.getElementById("childFirst02").style.display = "none";
    document.getElementById("childLast02").style.display = "none";
    document.getElementById("deleteChild02").style.display = "none";
    num--;  
}   
}

这是调用 removeChild() 函数的输入 HTML。

<input type="button" id="deleteChildButton" value="Remove Child" onClick="removeChild()"/>

是什么导致了我的 removeChild() 函数中的“参数不足”错误?

4

2 回答 2

1

这是因为您使用的是已定义的函数名称,例如 removeChild() 或 createElement()

避免这些您认为以前可能使用过的已知功能。并尝试将其更改为不常见的东西,例如 doSomthing();

于 2013-02-12T17:34:37.923 回答
1

removeChild()是一个标准的 DOMnode 方法,它需要一个参数并且应该从一个节点调用,如果你尝试以你的方式使用它,不同的浏览器将响应不同的错误。Firefox 返回“参数不足”异常,而 Chrome 给我“未捕获错误:NOT_FOUND_ERR:DOM 异常 8”。

将您的函数重命名为其他名称:

// Rename...
function removeChild(){
// to...
function someOtherRemoveChild(){

而是在你的标记中调用它。

<input type="button" id="deleteChildButton" value="Remove Child" onClick="someOtherRemoveChild()"/>

或者,由于您removeChild()window范围内定义,您应该能够通过 调用它window.removeChild(),但我不能保证它会起作用,并且重新定义 DOM 方法很奇怪,所以我实际上并不推荐这个:

<input type="button" id="deleteChildButton" value="Remove Child" onClick="window.removeChild()"/>
于 2012-07-09T02:38:02.467 回答