Javascript 文本更改而不更改 ID

标签 javascript

我有一个 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/

相关文章:

javascript - Plupload:在开始上传之前执行自定义检查

javascript - 重新编码函数

javascript - Jasmine SpyOn 测试不起作用

javascript - AJAX URL 中的十进制值

javascript - Javascript - 从字符串中提取数字

javascript - 尝试在 Vue 中创建电子邮件链接时编译模板时出错

javascript - 并行计算方差

javascript - ui-router 版本 0.2.* 已从 npm 中删除

javascript - 在 Node 中异步执行 CPU 密集型 HTTP 请求

javascript - 您可以从 ASP.NET MVC 5 中的 Controller 深层链接到页面吗?