【发布时间】:2019-06-20 22:35:13
【问题描述】:
在这个程序中,我可以使用按钮添加输入,但我需要在每个输入发生变化时显示其长度。我可以使用 EventListener 获得长度,但我不确定如何更改任何新创建的按钮的文本值。
在第 12 行,您可以看到我能够在第一个输入上成功更改值,但我使用的是 html 变量。如果您查看我的 addCell() 函数,您会发现我有一个元素作为每个节点的子节点,以跟踪每个输入的长度。我需要在我的 change() 函数中访问该元素,以便将 event.target.value.length 设置为相应的节点子元素。
我尝试过使用它,设置 var x = this,我尝试过使用 event.target 属性来查找相应的节点,甚至是 innerHTML。
var i = 0;
var count = 1;
var length = 2;
var chars = 0;
document.addEventListener('input', function (evt) {
change(evt);
});
function change(elem) {
var check = document.getElementById("first");
if (event.target == check) {
document.getElementById("len").innerHTML = event.target.value.length;
return;
}
// Here's where I'm stuck
}
function removeCell() {
if (count <= 1) {
alert("Illegal operation, the police have been notified.")
return;
}
var elem = document.getElementById('main');
elem.removeChild(elem.lastChild);
count = count - 1;
length = length - 1;
}
function addCell() {
var node = document.createElement('div');
node.innerHTML += length;
var inp = document.createElement('INPUT');
var size = document.createElement('size');
inp.setAttribute("type", "text");
node.appendChild(inp);
node.appendChild(size);
document.getElementById('main').appendChild(node);
count += 1;
length += 1;
i += 1;
}
#area {
width: 585px;
background-color: lightgrey;
color: black;
border-style: solid;
margin-left: auto;
margin-right: auto;
min-height: 100px;
height: auto
}
#texts {
width: 220px;
height: 50px;
border-style: solid;
}
body {
background-color: grey;
}
<div id="area">
<form id="main">
<pre><b> input </b> length</pre>
<span id="list">
1<input type="text" id="first"> <var id="len"></var>
</span>
</form>
<br />
<button onclick="addCell()">Add Cell</button>
<button onclick="removeCell()">Remove Cell</button>
<button onclick="sort()">Sort</button>
</div>
由于我能够使用 alert() 来显示每个新创建的输入在每次更改时的正确长度,我知道有一种方法可以访问我创建的“size”元素以使用 event.target 对其进行更新.value.length
【问题讨论】:
标签: javascript html