2012-11-20 43 views
0

我會盡量簡潔,我可以:)我正在一個項目上工作。該項目會生成許多頁面,其中包含複選框旁邊的縮略圖。總縮略圖可以有不同的數量。縮略圖分爲1000個html頁面。所以1000個縮略圖是一個html頁面。這些充滿縮略圖的頁面通過iframe通過父頁面調用。我的目標是讓用戶能夠檢查這些縮略圖附近的複選框,然後將新頁面加載到iframe中,然後將複選框加載到iframe中,然後將javascript加載到iframe中用戶以前已經檢查過。我跟蹤用戶使用數組檢查了哪些複選框。如何遞歸檢查數組值的複選框?

這是javascript。有兩個問題!首先問題是,我有調試的警報。它提醒正確的值,但會警告存儲在數組中的所有值。我希望它只提醒iframe頁面中存在的複選框,這就是爲什麼我將它放到document.getElementByNames中。然後......它不檢查任何盒子!無箱檢查:(

如何做到這一點有什麼想法?JS和HTML低於...

JS

function repGenChk(valNam) { 
    var chkN = valNam.name; 
    parent.genL.push(chkN); 
    alert(parent.genL); 
} 
function chkSet() { 
    for (var i = 0; i < parent.genL.length; i++) { 
    var item = parent.genL[i]; 
    var item = document.getElementsByName(item); 
    if (item != null) { document.getElementsByName(item).checked=true; } 
    alert(parent.genL[i]); 
}} 

window.onload = chkSet(); 

HTML

<input type="checkbox" onClick="repGenChk(this);" value="1" name="1"> 
<input type="checkbox" onClick="repGenChk(this);" value="2" name="2"> 
<input type="checkbox" onClick="repGenChk(this);" value="3" name="3"> 
<input type="checkbox" onClick="repGenChk(this);" value="4" name="4"> 
so on and so forth for Xthousands of checkboxes.... 

任何想法,想法,建設性的批評和批評是非常受歡迎的!過去我收到了很多jQuery建議,並且我開始考慮它。

非常感謝大家!

編輯 - 我能弄明白。我不認爲我可以使用帶有複選框的ID,我可以。嗚!

JS

function repGenChk(valNam) { 
var chkN = valNam.id; 
parent.genL.push(chkN); 
alert(parent.genL); 
} 
window.onload = function chkSet() { 
for (var i = 0; i < parent.genL.length; i++) { 
if (document.getElementById(parent.genL[i]) != null) {  document.getElementById(parent.genL[i]).checked=true; } 
} 
} 

HTML

<input type="checkbox" onClick="repGenChk(this);" id="1"> 
<input type="checkbox" onClick="repGenChk(this);" id="2"> 
<input type="checkbox" onClick="repGenChk(this);" id="3"> 
<input type="checkbox" onClick="repGenChk(this);" id="4"> 
etc etc etc..... 

:)

+0

document.getElementsByName返回一個集合,但它似乎試圖將它用作字符串。另外,你不需要在每一行上重新聲明'var item',雖然允許,但是當使用相同的變量來保存不同類型的值時,這是非常令人困惑的。 – lostsource

+0

Thanks for the tips lostsource! – 0xhughes

回答

1

考慮將一個單一的點擊收聽包含複選框的元素。給每個複選框一個唯一的ID或名稱。當你點擊容器時,檢查它來自哪裏。如果它來自複選框,則根據複選框是否被選中,將複選框的名稱/ ID添加或刪除到存儲哪些對象的對象。

當你想重新檢查它們時,迭代對象(使用for..in)並使用getElementByIdgetElementsByName(…)[0]來檢查複選框。這樣你只需迭代多個對象屬性,就像選中複選框一樣,而且getElementById速度非常快,所以事情應該更簡單快捷。

順便說一句,getElementsByName返回一個collection,這是類似數組,但它不是一個數組。

+0

謝謝你的迴應,我得到了它的工作!我不認爲ID爲複選框工作,猜猜它確實!謝謝 :) – 0xhughes