Javascript语法错误:意外的令牌'}'

Javascript SyntaxError: Unexpected token '}'

本文关键字:令牌 语法 错误 意外 Javascript      更新时间:2023-09-26

我有以下简单的代码,但由于某种原因,它会出现意外的令牌"}"错误,我不完全确定原因。我有以下代码来生成按钮

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>

奇怪的是,如果我从调试器运行,它可以正常工作,没有错误。然而,当通过onclick事件运行时,它会清除Unexpected token错误。

函数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>

有效的synatax将是

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

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

把所有这些都集中在一行是不安全的。尤其是onClick功能。我不想为HTML创建模板,直接为JavaScript函数创建模板,然后将变量输入到函数中。

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

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

您犯了一个低级错误。

这与onclick="checkIfSettingsWork("pollin", "31", "14", "on");" 一样无效

你需要修复"到"。

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