2012-05-15 4 views
1

제 스크립트에서는 createEl() 함수를 가지고 있는데, 여기에서 2 개의 변수를 선언하고 그 2 개의 함수에 선언 된 변수를 전달하는 2 개의 다른 함수를 호출합니다.하나의 함수에서 여러 함수로 매개 변수로 변수 전달하기

하나의 링크를 클릭하면 첫 번째 기능은 divp의 높이에 10px를 추가해야합니다. 다른 링크를 클릭하면 두 번째 함수는 div의 높이에서 10 픽셀을 공제해야합니다.

예상대로 작동하지 않습니다. 그 두 가지 기능을 다른 방식으로 첫 번째 기능에서 호출해야한다고 생각합니다. 이제 결과는 항상 10px를 클릭하면 항상 공제됩니다. 도와주세요.

P. 전역 변수가없는 옵션을 찾고 있는데, 변수를 한 함수에서 여러 함수로 매개 변수로 전달하는 것입니다.

HTML :

<a href="" onclick="createEl();return false;">Larger</a>&nbsp;&nbsp; 
<a href="" onclick="createEl();return false;">Smaller</a> 

<div id='box'></div> 

자바 스크립트 :

function createEl() { 
    var x = document.getElementById('box'); 
    var h = x.offsetHeight; 

    large(x,h); 
    small(x,h); 
} 

function large(x,h) { 
    x.style.height = h + 10 + "px"; 
} 

function small(x,h) { 
    x.style.height = h - 10 + "px"; 
} 

답변

3

업데이트 함수 호출에 식별자 매개 변수를 보내도록 HTML.

<a href="" onclick="createEl('large');return false;">Larger</a>&nbsp;&nbsp; 
<a href="" onclick="createEl('small');return false;">Smaller</a> 
<div id='box'></div> 

자바 스크립트 :

function createEl(funcName){ 

     var x = document.getElementById('box'); 
     var h = x.offsetHeight; 

     if(funcName =="large") large(x,h); //depending on the parameter call the required function 
     else small(x,h); 
} 
+1

그것은 또한 기능은'large'과'small' 그들이 경우 createEl''의 범위 내에서 선언 될 수 있음을 언급 할 가치가있을 수 있습니다 다른 곳에서 전화하지 않았습니다. – jbabey

2

당신은 매개 변수로 오프셋 전달하고 일반적인 changeHeight(offset) 기능을 만들 수 있습니다.

귀하의 요구 사항과 일치합니까?

HTML :

<a href="" onclick="changeHeight(10);return false;">Larger</a>&nbsp;&nbsp; 
<a href="" onclick="changeHeight(-10);return false;">Smaller</a> 
<div id='box'></div> 

자바 스크립트 :

changeHeight(offset) { 
    var x = document.getElementById('box'); 
    x.style.height = (x.offsetHeight + offset) + "px"; 
} 
관련 문제