【发布时间】:2018-10-30 15:18:58
【问题描述】:
我正在尝试通过 js 插入带有标签文本的跨度来根据用户输入创建按钮标签。我所有按钮的 id 都是 sting 格式的数字,所以 id="0"、id="1" 等。
下面的函数只会用 id="0" 标记第一个按钮。
gearInputs = document.getElementsByClassName('Box');
for (i=0; i<gearInputs.length; i++) {
var gearName = gearInputs[i].value,
gearButton = document.getElementById(i);
if(gearName && gearName != ''){
gearButton.innerHTML = '<span class="resultsButtons">' + gearName + '</span>';
}
}
我的按钮:
<button id="0" class="buttonshowHide" onclick="showHide(this.id)"></button>
我的输入框:
<input placeholder="Enter Camera/Lens Model" class="Box" type="text" id="gearInput1"/>
我也试过 i.toString();没有运气。如果我在 document.getElementById 中输入 0 作为 id,它将标记第一个按钮,但如果我输入 1、2 等,无论我输入为 1、“1”还是 i.toString(); 都会失败;我是 1。
我确信这很简单,我只是忽略了一些东西。
【问题讨论】:
-
我认为你的 for 循环不正确。猜猜应该是
for (i=0; i<searchBoxes; ++i) { -
我认为问题在于 HTML 元素 id 不能只是一个数字,而必须以字母 stackoverflow.com/questions/70579/… 开头。
-
@StevenLambert 用于 HTML5 之前和 HTML4 之前的标记。它在 HTML5 的规范中所说的一切都应该是唯一的并且没有空格 (w3.org/TR/2011/WD-html5-20110525/elements.html#the-id-attribute)。 ID 为 number 的元素应该可以正常工作。这是一个示例jsfiddle.net/k7qu2dxu
-
@keysl 哇,我已经用了很久了。我不知道他们更新了它。谢谢!
-
据我所知,您的代码似乎没有问题。您能否发布一些您的 HTML 代码,也许是某个地方的问题?
标签: javascript for-loop innerhtml getelementbyid