javascript - 内联JS,如何转义函数参数中的引号?

标签 javascript html 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>

看起来 JS 进入字符串,将 " 转换回 ",然后尝试执行命令,这当然是错误的。

最佳答案

你是对的。你在那里写的是html,所以html实体"e;被渲染为双引号",然后作为JavaScript执行。因为test("test ""); 不是有效的 javascript,这将引发错误。如果您想将 test" 传递到函数中,您可以像这样转义引号:test("test\"");

内联 JavaScript 不是一个好的实践,并且存在大量不直观的问题。阅读其中一些结果: Why is inline JS bad?

以下是如何正确执行此操作的示例。

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

a.addEventListener('click', function() {
  test('test"');
});

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

关于javascript - 内联JS,如何转义函数参数中的引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064906/

相关文章:

javascript - JSON 返回多列,但所有值都作为单个字符串。如何从数组中获取匹配的键值?

jquery - 需要使用jquery随机获得不同的灰色阴影

html - Bootstrap 4 card-Image-叠加文字流出图片

ruby - ruby 中的灵活引号之间有区别吗?

bash - 如何逃脱历史扩展感叹号!在双引号字符串中?

javascript - 为什么不能在普通函数或全局范围内使用await

javascript - window.location 未正确更新

HTML HREF,如何从根设置相对路径(不使用 ".."向上移动)?

ruby - 双引号与单引号

javascript - $rootScope 并不每次都更新