0

私はできる限り簡潔にしようとしています:)私はプロジェクトに取り組んでいます。このプロジェクトでは、横にチェックボックスが付いたサムネイル画像でいっぱいのページが多数生成されます。サムネイルの総数はさまざまです。サムネイルは1000アイテムのhtmlページにソートされています。つまり、1000個のサムネイルがhtmlページになります。サムネイルでいっぱいのこれらのページは、iframeを介して親のhtmlページによって呼び出されます。私の目標は、ユーザーがこれらのサムネイルの近くにあるチェックボックスをオンにしてから、新しいページをiframeにロードし、そこにチェックボックスを入れてから、前のページをiframeにロードできるようにし、JavaScriptでチェックボックスをオンにすることです。ユーザーは以前にチェックしていました。配列を使用して、ユーザーがチェックしたチェックボックスを追跡します。

これがjavascriptです。2つの問題があります!最初の問題は、デバッグ用のアラートがあります。正しい値を警告しますが、配列に格納されているすべての値を警告します。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を使用)、getElementByIdまたはgetElementsByName(…)[0]を使用してチェックボックスをオンにします。そうすれば、チェックボックスがオンになっている数だけオブジェクトプロパティを反復処理できgetElementById、非常に高速であるため、処理がより単純で高速になるはずです。

ところで、getElementsByNameはコレクションを返します。これは配列に似ていますが、配列ではありません。

于 2012-11-20T22:59:49.687 に答える