これは当たり前のことかもしれませんが、正直に言うと、私はどんな種類の開発者でもありません。私が働いている会社の顧客のために何かを働かせようとしているだけの人.
JS で定義された配列を取得しました。配列内の各項目に対して for ループを使用してコードのセクションを実行できるようにしたいと考えています。
コードを個別に (つまり、ループではなく) 実行すると、動作することがわかります。ループに入れようとするとすぐに失敗します。ここにいる誰かが、私が間違っていること、なぜ間違っているのか、どうすれば正しくできるかを教えてくれることを願っています。(私の意見では、これらのことを知っている方が常に良いので、私が何を/なぜしているのかを理解できるようにしたいと思います)。
私が持っている(動作する)JS/JQueryコードは次のとおりです。
var a = document.getElementById('roomthumb_2236');
var d = $("#chosenrate_2236").offset();
if ($('#chosenrate_2236').length) {
a.style.visibility='visible';
$("#roomthumb_2236").css({
top: d.top -9 + "px",
left: d.left + 560 + "px",
})
};
これは問題なく動作します (JS と JQuery のマッシュアップがあることは知っていますが、後で標準化できます)。
「for」ループのさまざまなバリエーションを試しましたが、うまくいかないようです。これが私の「for」コードの最新バージョンです。
var rooms_array = [2236, 2235]
var reposition = function (){
document.getElementById('hidden_stuff').style.display="none";
for (var i = 0; i < rooms_array.length; i++) {
var a = "roomthumb_"+rooms_array[i];
var b = "chosenrate_"+rooms_array[i];
var c = "chosenrate_"+rooms_array[i].offset()
if ($(b).length) {
$(a).css({
visibility:"visible",
top: c.top -9 + "px",
left: c.left + 560 + "px",
})
};
};
};
コードがすべきこと (明確でない場合) は次のとおりです。
- 配列を設定します (これは、データベースから動的に作成された ID のリストです)
- div「hiddenstuff」を非表示にします(これは正常に機能します)
- 次に、配列の各 ID に対して。
- a という変数「roomthumb_xxxx」(xxxx は配列の ID)を作成します。
- bという変数「chosenrate_xxxx」(xxxxは配列のID)を作成します
- 変数 b と一致する ID を持つ要素が存在するかどうかを確認し、存在する場合は、変数 a の ID を持つ要素の css プロパティを編集します。
var c は var b の位置を取得する必要があります (私が正しければ)、var a の ID を持つ要素を相対的に配置できるようにします...
コードがループ内で失敗する理由がわかりません。常に null エラーが発生するように見えますか、それとも var b が未定義であると思われますか?
私の推測では、文字列 (chosenrate_) を取り、それに配列文字列を追加して、その結果を ID として使用することはできません。alert(a) または alert(b) を使用すると、必要な ID を取得できますが、たとえば $("#ID") でそれを使用する方法がわかりません...
私はすべてを説明したと思います。私が何かを逃した場合は、それをよりよく説明しようとします。