内联JS,如何在函数参数中转义引号?

Som*_*ing 0 html javascript quotes

这是JavaScript中的错误吗?http://jsfiddle.net/SommerEngineering/mr8sZ/

<a href='javascript:test("test")'>Works</a><br/>
<a href='javascript:test("test&quot;")'>Does not work</a>
Run Code Online (Sandbox Code Playgroud)

它看起来像JS进入字符串转换回&quot;",然后尝试执行命令,这是那当然是错误的.

m59*_*m59 6

你是对的.你在那里写的是html,所以html实体&quote;呈现为双引号",然后作为JavaScript执行.因为test("test"");无效的javascript,这将引发错误.如果你想传入test"函数,你会逃避这样的引用:test("test\"");

内联JavaScript不是一个好习惯,并且有很多非直观的问题.阅读其中一些结果:为什么内联JS不好?

这是一个如何正确执行此操作的示例.

var a = document.getElementById('myElem');

a.addEventListener('click', function() {
  test('test"');
});
Run Code Online (Sandbox Code Playgroud)

请注意,有许多方法可以获取元素引用,您可能希望使用类并在循环中附加处理程序.