我有一张输入文本字段的表格。我想向所有字段添加事件处理程序,以便在单击单元格时,X会填充输入值和单元格。再次单击,X值将再次变为“”。 我已经分配了事件处理程序,但是在输入字段上设置新值时遇到麻烦。
我尝试了来自Web上不同位置的许多代码段,但无法在表格单元格(输入文本字段)中获取要更改的值。
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].getAttribute('type') == 'text') {
inputs[i].addEventListener('click', changeValue);
}
}
function changeValue(el) {
var el = this;
var v = el.value;
if (v === "") {
v = 'X';
console.log(v);
} else if (v === 'X') {
v = "";
}
}
<table>
<thead>
<tr>
<th scope="col">type</th>
<th scope="col">1/4</th>
<th scope="col">3/8</th>
</tr>
</thead>
<tbody>
<tr class="list_group">
<td class="cell1" data-label="type">
<input aria-label="type" type="text" name="input_1[]" value="Fir"></td>
<td class="cell2" data-label="1/4">
<input aria-label="1/4" type="text" name="input_1[]" value=""></td>
<td class="cell3" data-label="3/8">
<input aria-label="3/8" type="text" name="input_1[]" value=""></td>
</tr>
<tr class="list_group">
<td class="cell1" data-label="type">
<input aria-label="type" type="text" name="input_1[]" value="SYP"></td>
<td class="cell2" data-label="1/4">
<input aria-label="1/4" type="text" name="input_1[]" value=""></td>
<td class="cell3" data-label="3/8">
<input aria-label="3/8" type="text" name="input_1[]" value=""></td>
</tr>
<tr class="list_group">
<td class="cell1" data-label="type">
<input aria-label="type" type="text" name="input_1[]" value="Marine"></td>
<td class="cell2" data-label="1/4">
<input aria-label="1/4" type="text" name="input_1[]" value=""></td>
<td class="cell3" data-label="3/8">
<input aria-label="3/8" type="text" name="input_1[]" value=""></td>
</tr>
</tbody>
</table>
前提是要提供一个大图表,用户可以从图表中查看他们拥有或感兴趣的产品
答案 0 :(得分:0)
您的逻辑很接近。事件处理程序接收event
作为参数,并且您可以通过this
访问处理程序中注册的DOM元素。 See here.
因此,您所需要做的就是在changeValue
函数中简化代码。代替el
表示元素,请使用e
代表事件。这将为您将来提供帮助,因为事件对象上除了当前的属性外,还具有多种属性,可用于多种目的。
接下来,由于value
已绑定到目标DOM元素,因此您既可以获取并设置通过input
单击的特定this.value
的{{1}}。>
然后可以将事件处理程序简化为简单的this
操作:
ternary
function changeValue(e) {
this.value = this.value === "X" ? "" : "X"
}
操作检查条件是否值等于“ X”,如果是,则返回一个空字符串,否则(意味着该值是X以外的值)返回“ X”
ternary
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].getAttribute('type') == 'text') {
inputs[i].addEventListener('click', changeValue);
}
}
function changeValue(e) {
this.value = this.value === "X" ? "" : "X"
}