2010-10-22 82 views
1

我在頁面上有複選框,當您爲每個複選框單擊一個範圍時,它會爲每個複選框更改包含div的背景顏色。問題在於有人提交表單並轉到下一頁,然後單擊後退按鈕複選框保持選中狀態,但div顏色恢復。有沒有辦法在頁面加載時獲取已檢查框的div ID?檢測複選框是否被選中,然後獲取div ID

我有這樣的檢測由身體的onload選中的複選框,但不知道如何讓DIV ID爲他們每個人:

function detectchecked(){ 
    var count = 0; 
    var inputs = myform.getElementsByTagName('input'); 
    for (var i = 0, j = inputs.length; i<j; i++) { 
     var input = inputs[i]; 
     if (input.type && input.type === 'checkbox' && input.checked) { 
      alert(input); 
     } 
    } 
    } 

我的電流輸入代碼如下所示:

<div id="myform"> 
<div id="div4452101" style="float:left; width:194px; height:90px; border:1px solid #000; margin:2px;"> 
    <div class="resultphoto"> 
    <span onClick="checkem('4452101');"> 
    image goes here 
    </span> 
    </div> 
    <span onClick="checkem('4452101');"> 
    check this 
    </span> 
    <input type="checkbox" name="numbers[]" id="4452101" value="4452101" /> 
</div> 
</div> 
+0

您是否添加了條件if(複選框值是否存在){使用此樣式}? – zod 2010-10-22 14:13:23

+0

我建議你使用jQuery,如果你被允許:)這將簡化整個事情很多.. – Jack 2010-10-22 14:13:31

+0

是否有問題,當有人回到頁面時,如果瀏覽器「後退」按鈕被按下,它不起作用? – Shagglez 2010-10-22 14:33:59

回答

2

在這樣的無代碼和簡單的問題中,不需要jQuery。

必須使用這樣的代碼:

function detectchecked(){ 
    var count = 0; 
    var inputs = myform.getElementsByTagName('input'); 
    for (var i = 0, j = inputs.length; i<j; i++) { 
     var input = inputs[i]; 
     if (input.type && input.type === 'checkbox' && input.checked) { 
      document.getElementById('div'+input.getAttribute('id')).setAttribute('style','Your style here'); 
     } 
    } 
    } 

當然,如果我理解正確的話,你

+0

我實際上解決它通過使用:var pid = input.parentNode.id; – John 2010-10-22 14:22:38

1

你想使用一個框架? JQuery?

該腳本會很容易:

$( '#myForm的輸入[類型=複選框]:選中')。ATTR( '風格', '你的風格');

+0

正如我在Bick的回答中所說的,我能夠得到div的id:var pid = input.parentNode.id; – John 2010-10-22 14:40:32