2012-07-09 52 views
1

我有一些全局变量增加一个数字。javascript函数给我“没有足够的参数”错误在萤火虫

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"); 
} 
} 

所有这些工作正常。
但是,当我点击调用下一个函数的按钮deleteChild00时,在Firebug中出现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()函数中的“没有足够的参数”错误?

回答

1

removeChild()是一个standard DOMnode moethod它需要一个参数,应该从一个节点调用,如果您尝试按照您的方式使用它,不同的浏览器将响应不同的错误。 Firefox返回“没有足够的参数”异常,而Chrome给我“未捕获的错误:NOT_FOUND_ERR:DOM异常8”。

重命名功能,别的东西:

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

并调用在您的标记代替。

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

或者,因为你在window范围定义removeChild(),你应该能够通过window.removeChild()称呼它,但我不能保证,将工作,这是奇怪的重新定义DOM方法,所以我实际上并不推荐这样的:

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

真棒!改变功能的名称就像一个魅力。感谢您的帮助! – swap 2012-07-09 03:37:30

1

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

避免这些已知你认为之前可能使用过的功能。并尝试将其更改为doSomthing()等不常见的东西。