2012-07-09 2 views
1

숫자를 증가시키는 전역 변수가 있습니다.javascript 함수가 firebug에서 "인수가 충분하지 않습니다."오류가 발생했습니다.

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()은 인수가 필요하며 노드에서 호출되어야하며 다른 브라우저는 사용자가 사용하는 방식으로 다른 오류를 표시합니다. Firefox는 "충분하지 않은 인수"예외를 반환하고 Chrome은 "Uncaught Error : NOT_FOUND_ERR : DOM Exception 8"을 제공합니다.

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

를 대신 마크 업에 그 전화 :

는 뭔가 다른 함수의 이름을 바꿉니다.

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

또는 당신이 window 범위에 removeChild()을 정의하기 때문에, 당신은 window.removeChild()을 통해 전화를 할 수 있어야한다,하지만 난 그 작동 보장 할 수 없습니다, 그리고 DOM 방법을 재정의하는 이상한, 그래서 실제로 사용하지 않는 것이 좋습니다 :이 알려져을 피하기 이미 정의 함수 이름의 예에서 removeChild() 또는의 createElement()

을 사용하고 있기 때문에

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

굉장 !! 매력처럼 작동하는 기능의 이름을 변경합니다. 도와 줘서 고마워! – swap

1

이있다 이전에 사용되었을 수 있다고 생각했던 기능. doSomthing()과 같이 드문 것으로 변경하려고 시도하십시오.

관련 문제