2012-05-04 82 views
2

我還是比較新的JavaScript,我沒有找到我犯我的錯誤。我正在使用的基本設置是一組單選按鈕以及一組複選框。根據所選的單選按鈕,只有一組特定的複選框應該可用,其餘的應該被禁用/變灰。給定的單選按鈕允許哪些複選框通過php數組傳遞。在我的代碼中,排他選項指向單選按鈕,而擴展選項指複選框。我的JavaScript和PHP實現此功能如下:Javascript - Onclick事件發生在和僅在頁面加載期間

window.onload = function(){ 
    <?php 
    for($i = 0; $i < count($students_information); $i++){ 
     foreach($exclusive_extended_array as $exclusive => $extended){ 
      echo "$('".$i."_exclusive_".$exclusive."').onclick = allow(".$i.",".json_encode($extended).");"; 
     } 
    } 
    ?> 
} 
function allow(i, extended){ 
    $('[id^="'+i+'Extended"]').disabled = true; 
    for (var j = 0; j < extended.length; j++) { 
     alert(extended[j]); 
     $(i+"Extended"+extended[j]).disabled = false; 
    } 
} 

在加載的頁面就顯示爲:

<script type="text/javascript"> 
window.onload = function(){ 
    $('0_exclusive_2176').onclick = allow(0,[1975]); 
    $('0_exclusive_911').onclick = allow(0,[]); 
    $('0_exclusive_795').onclick = allow(0,[1973,1975]); 
} 
function allow(i, extended){ 
    $('[id^="'+i+'Extended"]').disabled = true; 
    for (var j = 0; j < extended.length; j++) { 
     alert(extended[j]); 
     $(i+"Extended"+extended[j]).disabled = false; 
    } 
} 
</script> 

不幸的是,該代碼最終做的是運行腳本時頁面加載,而比選中其中一個單選按鈕時要少。我不認爲這是元素名稱的問題(儘管我知道命名風格並不一致,但是我沒有完全控制它)。我假設這只是我在代碼中犯了一個簡單的錯誤,而我仍然沒有足夠的JavaScript經驗來抓它。任何人看到我做錯了什麼?

謝謝你的時間!

+2

嘗試$('0_exclusive_2176')。onclick = function(){你的代碼在這裏} – MilkyWayJoe

回答

6

你分配你的點擊處理程序是這樣的:

$('0_exclusive_2176').onclick = allow(0,[1975]); 

發生了什麼事是:allow正在運行和返回值(undefined)設置爲事件。您需要設置onclick一個函數:

$('0_exclusive_2176').onclick = function(){ 
    allow(0,[1975]); 
}; 

您也可以allow回報功能:

function allow(i, extended){ 
    return function(){ 
     $('[id^="'+i+'Extended"]').disabled = true; 
     for (var j = 0; j < extended.length; j++) { 
      alert(extended[j]); 
      $(i+"Extended"+extended[j]).disabled = false; 
     } 
    }; 
} 

現在$('0_exclusive_2176').onclick = allow(0,[1975]);應該按預期工作。

+0

太棒了。謝謝!另外,我非常贊同化身。 – golmschenk

+0

@golmschenk:很高興能幫到你!另外,謝謝:-)我用[小馬創建者]製作了頭像(http://generalzoi.deviantart.com/art/Pony-Creator-Full-Version-254295904):-P –

相關問題