gpt4 book ai didi

javascript - 关于创建动态按钮但无法提供正确值的循环

转载 作者:行者123 更新时间:2023-11-30 08:08:32 27 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Javascript infamous Loop problem?

我有一个小问题,如果你们中的一些人能够意识到这里缺少什么样的逻辑,那将是非常好的,因为我似乎找不到它:

我有一个数组,其中包含一些先前操作的结果。假设数组是:

var results = [0, 1];

然后我有一堆代码,我在其中创建了一些按钮,并在 for 循环中根据数组的位置为这些按钮分配了不同的功能。问题是由于某种原因,创建的所有按钮(在本例中为两个)都带有分配给数组最后一个值的函数(在本例中,两者将作为一个,而不是第一个为 0 和第二个是 1)

这是代码:

for (var i = 0; i < results.length; i++) {
var br2 = b.document.createElement("br");
var reslabel = b.document.createTextNode(Nom[results[i]].toString());
var card = document.createElement("input");
card.type = "button";
id = results[i]; // this is the problematic value.
card.onclick = newcard; // this function will use the above value.
card.value = "Show card";
divcontainer.appendChild(br2);
divcontainer.appendChild(reslabel);
divcontainer.appendChild(card);
}

事实上,此代码生成与数组中的元素一样多的按钮,每个按钮都有其适当的标签(它从另一个数组中检索标签)。一切都很好。然后,我单击按钮。所有按钮都应运行 newcard 函数。该函数需要 id 变量,因此在本例中它应该是:

  • 第一个按钮:使用值为 0 的变量 id 运行 newcard
  • 第二个按钮:使用值为 1 的变量 id 运行 newcard

但是两个按钮都使用 id 作为 1 来运行……这是为什么?

这可能非常简单,或者可能只是在我的时区已经很晚了 :-) 不管怎样,如果有任何评论,我将不胜感激。我在这里学到了很多东西...

谢谢!

编辑添加新卡的定义:

function newcard() {
id = id;
var toerase = window.document.getElementById("oldcard");
toerase.innerHTML = "";
generate();
}

generate 函数将使用 id 生成一些内容。没什么问题,它生成的内容很好,只是 id 始终设置为数组中的最后一项。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com