这可能真的很明显,但老实说,我不是任何类型的开发人员。只是一个试图为我工作的公司的客户工作的人。
我在 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;
- 创建一个名为“roomthumb_xxxx”的变量(其中 xxxx 是数组中的 id)
- 创建一个名为 b 的变量“chosenrate_xxxx”(其中 xxxx 是数组中的 id)
- 检查是否存在具有与变量 b 匹配的 ID 的元素,如果存在则编辑具有变量 a 的 ID 的元素的 css 属性
var c 应该获得 var b 的位置(如果我是对的),以允许我相对于它定位具有 var a 的 ID 的元素...
我不知道为什么代码在循环内失败。我似乎总是得到空错误或者它认为 var b 是未定义的?
我的猜测是我不能接受一个字符串(chosenrate_),向它添加一个数组字符串,然后将该结果用作 ID。如果我使用 alert(a) 或 alert(b) 我确实得到了我需要的 ID,但我不知道如何在 $("#ID") 中使用它,例如......
我想我已经解释了一切。如果我错过了什么,我会尝试更好地解释它。