2012-05-15 67 views
1

在我的剧本我有一个功能createEl()这里我声明两个变量,并调用2种通过这些声明的变量,以那些2个功能之外的功能。传递变量从一个函数参数的多种功能

通过点击一个链接第一个功能是应该为10px添加到divp的高度。通过点击另一个链接,第二个功能应从div的高度扣除10px。

如同预期它不工作。我相信我必须以不同的方式从我的第一个函数中调用这两个函数?现在结果是,我点击这些10px的链接总是被扣除。请帮忙。

P.S.我正在寻找一个没有全局变量的选项,而只是将变量作为参数从一个函数传递到多个函数。

HTML:

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

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

的JavaScript:

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> 

的JavaScript:

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> 

的JavaScript:

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