2013-04-13 345 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