我有一个 onclick javascript 函数,其目标是将表格的文本更改为其他内容
function functionL1() {
if (document.getElementById("A1").innerHTML = "Text 1" ) {
var Transfer1 = document.getElementById("B1 ").innerHTML;
document.getElementById("A1").innerHTML = Transfer1;
}
这可行,但我想让它让相同的文本只出现一次
不幸的是,这不起作用
function functionL1() {
if (document.getElementById("A1").innerHTML = "Text 1" ) {
var Transfer1 = document.getElementById("B1 ").innerHTML;
document.getElementById("A1").innerHTML = Transfer1;
}
else if (document.getElementById("A2").innerHTML = "Text 1" ) {
var Transfer2 = document.getElementById("P1").innerHTML;
document.getElementById("A2").innerHTML = Transfer2;
}
}
我认为这是因为将 A1
更改为 B1
后,javascript 函数无法识别 A1
不再是文本 1。
有人知道解决这个问题的方法吗?
注意:用 value
替换 innerhtml
不起作用
最佳答案
正如@Gerald Schneider 的评论中所说,
您正在使用 assignment operator (=
) 而不是 equality operator (==
/===
)。这绝对是您的问题之一。
另一个可能是您的单元格不仅仅包含文本,还可能包含一些标记?如果是这种情况,并且您查看了它,那么 .innerHTML
的值将与您看到的不同。
JS 中还有一个属性,名为 .textContent
<- ( MDN )
如果将 .innerHTML
替换为 .textContent
,您至少应该只返回没有 HTML 的文本,即使它可能仍然不同。
最后但并非最不重要的一点是,99.9% 的问题都与您没有预料到的函数输出有关,而 JS 在这方面很奇怪。
为了确保您获得正确的值,请使用 console.log()
<- ( MDN ) 这将记录变量、函数以及您抛出的几乎所有其他内容的输出它位于开发工具中的 JS 控制台中(在 Windows 上通常通过 F12 访问,在 OSX 上 cmd + shift + i)
记录变量并使用 (strict) equality operator而不是assignment operator并告诉我们您遇到了什么样的错误。
最后一件事,当使用 if () { ... } else if () { ... }
阻止
else if () { ... }
仅当第一个 if () { ... }
计算结果为 false 时运行。在考虑程序的逻辑时,请确保牢记这一点,例如我希望这些检查是线性的还是异步的?
希望对你有帮助!
关于Javascript 文本更改而不更改 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32518240/