如何在JavaScript的if语句中区分输入值与td文本内容
解决方法:通过标签名判断元素类型来获取对应值
你可以利用DOM元素的tagName属性来判断当前元素是<td>还是<input>,这个属性会返回大写的标签名称,非常可靠。
先获取到目标元素,再根据它的tagName做分支处理就可以了,修改后的代码如下:
for(var i=0; i<9; i++){ for(var j=0;j<9;j++){ var aux = i.toString().concat(j.toString()); const element = document.getElementById(aux); // 根据标签类型选择取值方式 if (element.tagName === 'TD') { // TD元素取innerText,用trim清理多余空格 matriz[i][j] = element.innerText.trim(); } else if (element.tagName === 'INPUT') { // INPUT元素取value,同样清理空格避免冗余 matriz[i][j] = element.value.trim(); } } }
补充说明:
tagName是所有HTML元素都具备的标准属性,返回值是大写的标签名(比如'TD'、'INPUT'),判断时要注意大小写匹配。- 加入
trim()是为了避免元素文本/输入值中包含多余的换行、空格等空白字符,确保存入矩阵的是干净的内容。 - 如果你想更精确地判断元素类型,也可以用DOM元素的构造函数判断,比如:
这种方式更面向对象,但if (element instanceof HTMLTableCellElement) { // 确认是TD元素 } else if (element instanceof HTMLInputElement) { // 确认是INPUT元素 }tagName在实际场景中已经足够简洁好用。
内容的提问来源于stack exchange,提问作者Javierdds
相关产品推荐
相关产品推荐

