javascript函数在firebug中给出了“没有足够的参数”错误

时间:2012-07-09 02:35:04

标签: firebug 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()函数中导致“参数不足”的原因是什么?

2 个答案:

答案 0 :(得分: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()"/>

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

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

答案 1 :(得分:1)

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

避免使用您认为以前可能使用过的已知功能。并尝试将其更改为doSomthing();

等不常见的东西