Javascript SyntaxError: Unexpected token '}'

Javascript SyntaxError: Unexpected token '}'

我有以下简单代码,但由于某种原因它会抛出意外标记“}”错误,我不完全确定原因。 我有以下代码来生成按钮

var OverlayMessage = ("Do you want to test these settings? <br> <h6>" + protocol + ":" + systemcodeSend + "-" + unitcode + " sending " + state + '</h6> <br> <a id="btnGreen" onclick="checkIfSettingsWork("' + protocol +'", "'+ systemcodeSend +'", "'+ unitcode +'", "'+ state +'");">Yes</a> <a id="btnRed" onclick="toggleVisibility(\'overlayAddDevice\')">No</a>');
        console.log(OverlayMessage);
        overlayMessage(OverlayMessage);

console.log的输出结果如下

<a id="btnGreen" onclick="checkIfSettingsWork("pollin", "31", "14", "on");">Yes</a>

st运行ge 的事情是,如果我从调试器 运行,它工作正常没有错误。但是,当 运行 通过 onclick 事件时,它会出现意外令牌错误。

函数 checkIfSettingsWork 甚至没有被 运行,我通过让它登录到控制台来检查它,当被 onclick 事件 运行 时它没有返回任何东西但是当我 运行 以下 javascript 通过调试器。

checkIfSettingsWork("pollin", "31", "14", "on");

这是 checkIfSettingsWork 函数。

function checkIfSettingsWork(protocol, systemcodeSend, unitcode, state) {
    console.log(protocol + systemcodeSend + unitcode + state)

}

这是无效的html:

 <a id="btnGreen" onclick="checkIfSettingsWork("pollin", "31", "14", "on");">Yes</a>

" 字符提前结束了您的 onclick 属性,因此浏览器最终将其解释为 onclick="checkIfSettingsWork("

将其更改为解决方法:

<a id="btnGreen" onclick="checkIfSettingsWork('pollin', '31', '14', 'on')">Yes</a>

有效语法为

<a id="btnGreen" onclick="checkIfSettingsWork('pollin', '31', '14', 'on')">Yes</a>

你犯了一个 low-level 错误。

这是无效的 onclick="checkIfSettingsWork("pollin", "31", "14", "on");"

您需要将 " 修改为 ' 。

另一件事是我认为当你声明 OverlayMessage 时,只是我的建议,也许你需要以统一的方式使用 "' 字符。

这里有很多上下文,我认为需要将它们分开。您正在尝试在此声明中创建文本 HTML 和 JavaScript。同样在你混合单引号和双引号。在你的串联中。您可以同时使用两者,但它们必须匹配。

在一行中完成所有这些操作是不安全的。特别是 onClick 函数。我不想为 HTML 创建模板,直接为 JavaScript 函数创建模板,然后将变量提供给函数。

您的函数中的参数也不需要任何引号,您只需输入变量即可。

CheckIfSettingsWork(协议、系统代码发送、单元代码、状态)