Javascript &引用;SyntaxError:缺少)参数列表后“;
我在firebug中遇到以下错误:Javascript &引用;SyntaxError:缺少)参数列表后“;,javascript,syntax-error,Javascript,Syntax Error,我在firebug中遇到以下错误: SyntaxError: missing ) after argument list 根据该代码: table += '<tbody>'+ '<tr>'+ '<td>'+this.zona+'</td>' + '<td>'+this.rruga+'<br/><div id="dialog-'+this.id+'" style= "margin-left:1px; wid
SyntaxError: missing ) after argument list
根据该代码:
table +=
'<tbody>'+
'<tr>'+
'<td>'+this.zona+'</td>' +
'<td>'+this.rruga+'<br/><div id="dialog-'+this.id+'" style= "margin-left:1px; width:340px; display:none;height:180px"></div></td>' +
'<td>'+this.dita+'</td>' +
'<td><img src="images/map.jpg" id = "mapicon" onClick="show(this.rruga, this.id);"></td>' +
'<tr>'+
'<tbody>';
表格+=
''+
''+
''这个,佐纳''+
“+this.rruga+”
”+
''这个,迪塔+''+
'' +
''+
'';
我不太确定我的代码中缺少了哪个括号。这是因为您在引号中使用了
+
。你的代码
str = '...' + 'onclick="show(' + this.rruga + ', ' + this.id + ');"' + '...';
将生成如下所示的HTML
onclick="show(hello world,foo bar);"
这显然不起作用,因为函数的参数不再被正确引用,因此被视为变量名,然后空格导致抛出异常。在最坏的情况下,如果您没有引用this.rruga
或this.id
或对其进行HTML编码,则可能有人会传递一段精心编制的代码,将自定义HTML注入页面
您可以继续使用字符串,只要您对参数进行编码,使它们是HTML安全的,并且不会结束引号,然后在其周围添加引号(\'
)
HTML+JavaScript编码的引号是\\”
,用于\”
和\&&39代码>用于\'
。前面的\\
是为了不打断JavaScript引号,然后是&foo
是字符的HTML编码
str = '...' + 'onclick="show(\''
+ (''+this.rruga).replace(/"/g, '\\"').replace(/'/g, '\\'') + '\', \''
+ (''+this.id).replace(/"/g, '\\"').replace(/'/g, '\\'') + '\');"'
+ '...';
当您在JavaScript中生成所有这些时,请考虑将监听器保持在HTML字符串之外,并将其附加到元素中,或者简单地使用“代码>节点”。这意味着您可以继承您在所需函数中的位置范围(尽管
此
仍将更改为表示节点),并且如果您使用DOM方法,则无需担心通过特殊编码的方式,因为浏览器将为您完成这项工作
编辑我将添加一个函数,使您可以轻松地进行编辑
function quoteAndEscape(str) {
return ''
+ ''' // open quote '
+ (''+str) // force string
.replace(/\\/g, '\\\\') // double \
.replace(/"/g, '\\"') // encode "
.replace(/'/g, '\\'') // encode '
+ '''; // close quote '
}
quoteAndEscape('I\'ll say "hello" to the WORLD!');
// 'I\'ll say \"hello\" to the WORLD!'
// which is a HTML-encoded JavaScript String literal.
// You may also want to encode the opening and closing quotes
// these ones don't need to be backslash-escaped though.
// edited that too
我假设您发布的内容是命令的一部分,因此前面有一个“
如果this.rruga
具有特殊字符,例如空格,则可以收到此错误消息。。例如:代码将创建类似于show(您好,12)代码>语法不正确。您可以通过检查生成的html内容来验证这一点
解决方案:把那个论点放在引号里<代码>\''+this.rruga+'\'
..您不能在内部使用此
。
此外,您需要使用getAttribute()
从特定元素获取rugga
值
这是一个可行的方法。您的字符串连接没有意义。事实上,您的字符串连接没有连接onClick=“show(this.rruga,this.id);”
似乎没有语法错误。但这肯定不是你想要的。要么你的代码不同,要么语法错误被抛出到其他地方。我打赌不是这样。看到我的答案了。你认为这个DOM元素有rruga属性吗?@dystroy不是默认的+
只是字符串的一部分,代码本身实际上在语法上是正确的。OP可能在一个更扩展的解决方案中有这个代码,而不是元素。但是我们不知道它是什么。this.rruga是从JSON函数(data,function(){…})提交的是的,但与此无关。这不能解释语法错误。我看不到任何有效的答案:在show
function show(street,id){window.alert(street+“->”+id);}我已经用你的函数替换了fiddle中的show
,检查fiddle。根据小提琴更改
,看看它是否适合您。