2013-04-13 350 views
0

我是初学者,所以请耐心等待。我查了这个问题并没有找到解决方案。 我有以下代码:将参数传递给脚本函数

在头部

<script> 
    function ledonoff(led) 
    { 
    if (document.getElementById('ck1').checked == true){ 
     document.getElementById('led1').style.backgroundImage="url('Image/led_green.gif')";} 
    else { 
     document.getElementById('led1').style.backgroundImage="url('Image/led_red.gif');} 
    } 
</script> 

在主体

<div id="led1"></div> 

<input name="" type="checkbox" id="ck1" onchange="ledonoff('led1')" value=""/> 

我喜欢有ledonoff采取2个参数的函数来在功能被使用:格ID将被更改为 以及要在功能上验证的复选框。 任何人都可以帮助我。 谢谢

+0

''在开始?这可能是问题的根源。 –

+1

你传入一个参数,但从不使用它。 – Oded

+0

看看arguments.length,我想这是你想要的,如果你想超载的功能。 – OQJF

回答

1

变化的函数:

function ledonoff(led,checkBox){ 
     var theDiv = document.getElementById(led), 
      check = document.getElementById(checkBox); 
     if (check.checked == true){ 
     theDiv.style.backgroundImage="url('Image/led_green.gif')"; 
     } else { 
     theDiv.style.backgroundImage="url('Image/led_red.gif')"; 
     } 
    } 

和htmlonchange到:

"ledonoff('led1','ck1')" 

in jsbin

+0

谢谢你的答案。这解决了我的问题。 – bogdanioanliviu

0

你可以简单地通过它:onchange="ledonoff('led1', 'ck1')"

但是你的函数期待一个参数,所以你需要修改它。

function ledonoff(led) -> function ledonoff(led, ck) 

只是要注意

这种类型的JavaScript被称为Obtrusive Javascript。最近设计原则的转变是将你的Javascript和你的HTML放在完全独立的文件中。您应该使用DOM将事件侦听器添加到DOM元素,而不是以属性方式将事件分配给事件。 Here是一个很好的教程,让你开始这个想法。

1

修改代码以:

<script> 
function ledonoff(isChecked, elementId) 
{ 
if (isCkecked){ 
    document.getElementById(elementId).style.backgroundImage="url('Image/led_green.gif')";} 
else { 
    document.getElementById(elementId).style.backgroundImage="url('Image/led_red.gif');} 
} 
</script> 

与机体:

<input name="" type="checkbox" id="ck1" onchange="ledonoff(this.checked, "led1")" value=""/>Led 1 
+0

用'document.getElementById(elementId).style.backgroundImage =“url('Image/led_”+(isChecked?“green”:“red”)+“.gif')”;“ – lib3d

0

做到这一点:

<script> 
function ledonoff(led,checkbox){ 
    if(document.getElementById(checkbox).checked == true){ 
    document.getElementById(led).style.backgroundImage="url('Image/led_green.gif')"; 
    }else{ 
    document.getElementById(led).style.backgroundImage="url('Image/led_red.gif')"; 
    } 
} 
</script> 

和你的HTML:

<div id="led1"></div> 
<input name="" type="checkbox" id="ck1" onchange="ledonoff('led1','ch1')" value=""/>Led1 

我想,那就是它。我假设你的图像路径是正确的。

+0

非常短,谢谢帮助 – bogdanioanliviu

0

使用此。

</script> 
function ledonoff(led,chk) 
{ 
    if (document.getElementById(chk).checked == true){ 
    document.getElementById(led).style.backgroundImage="url('Image/led_green.gif')";} 
    else { 
    document.getElementById(led).style.backgroundImage="url('Image/led_red.gif');} 
    } 
</script> 


<div id="led1"></div> 

<input name="" type="checkbox" id="ck1" onchange="ledonoff('led1','ck1')" value=""/>Led 1