0

我会尽量简洁:) 我正在做一个项目。该项目生成许多页面,其中包含缩略图,旁边有复选框。总缩略图的数量可能不同。缩略图被分类为 1000 个项目的 html 页面。所以 1000 个缩略图一个 html 页面。这些充满缩略图的页面由父 html 页面通过 iframe 调用。我的目标是让用户能够检查这些缩略图附近的复选框,然后将新页面加载到 iframe 中,那里的复选框,然后能够将上一页加载到 iframe 中,并让 javascript 检查框用户之前检查过。我使用数组跟踪用户检查了哪些复选框。

这是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.....

:)

4

1 回答 1

1

考虑在包含复选框的元素上放置一个单击侦听器。给每个复选框一个唯一的 ID 或名称。当您单击容器时,请检查它的来源。如果它来自一个复选框,则将复选框的名称/ID 添加或删除到一个对象,该对象存储根据复选框是否被选中而被选中的对象。

当您想重新检查它们时,迭代对象(使用 for..in)并使用getElementByIdorgetElementsByName(…)[0]来检查复选框。这样,您只需迭代与选中复选框一样多的对象属性,getElementById而且速度非常快,因此事情应该更简单、更快。

顺便说一句,getElementsByName返回一个collection,它类似于数组,但它不是数组。

于 2012-11-20T22:59:49.687 回答