在JavaScript函数参数中传递双引号

在JavaScript函数参数中传递双引号,javascript,Javascript,很抱歉,我对以下html有问题 <span onClick="alert('hi&#34 more stuff')">Works</span><br/> <span onClick='alert("Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated

很抱歉,我对以下html有问题

<span onClick="alert('hi&#34 more stuff')">Works</span><br/>
<span onClick='alert("Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.")'>Works long text</span>
<br />
<span onClick='alert("Far far &#34 away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts. Separated they live in Bookmarksgrove right at the coast of the Semantics, a large language ocean.")'> Doesn't work long text</span>
有效
长文本作品
长文本不起作用
我的问题是,在第三个onclick处理程序中,浏览器中出现了一个未终止的字符串错误。在实际程序中,参数字符串是在客户端生成的,因此所有编码都必须在客户端进行

在这个有效的例子中,我尝试了
和#34
在最后一个示例中有效。但在第一个示例中有效


有一个工作示例,只需使用反斜杠将其转义“”

要在JavaScript
分隔字符串中使用
,请使用
\“

要在HTML
分隔属性值中使用
,请使用

如果需要,将它们组合起来:
\“



或者,停止使用内部事件属性,编写并绑定事件处理程序。

首先,您应该编写类似以下内容的html:

attribute="property"
所以如果你写:

onclick="alert('what you want here with encoded content it will work')"

查看更新后的fiddler

只需使用
\“
而不是在HTML中保留JS,就可以避免在HTML属性的JS字符串中编码引号的问题。
span
元素不是交互式的,它们不会以默认的焦点顺序出现,您应该认真考虑使用<代码> <代码>元素。@昆廷,而这是正确的,另一种选择是添加代码>角色=“按钮”< /C> >和<代码> TabeDe=“0”<代码>。这使得跨浏览器的按钮更容易设置样式。虽然这应该可以工作,但我反对你的观点,因为它仍然不是有效的HTML,如果属性周围的引号发生变化,它可能会被意外破坏。理想情况下,您应该对双引号字符进行正确的HTML编码。@zzzzBov我同意可能出现的破坏,但它怎么会是无效的HTML?@zzzzBov我不明白您的意思。首先,拥有
\“
内部JavaScript字符串与HTML有效性无关。接下来,如果您关心属性值周围的引号,请记住,它也会影响JS函数参数周围的引号,因此最好是动态绑定事件,而不是内联。@VisioN,它不是有效的HTML,因为我完全错了,应该道歉。很抱歉。不知怎的,我脑子里想的是,所有的
值都需要转义到
才能有效,但我错了。我关于意外破损的观点仍然有效,但我会尽快取消否决票。@ZZZBOV接受
:)
否则,是的,您对这种方法可能导致的问题的担心是完全正确的,值得注意,以使答案更完整。然而,提出更稳定的解决方案可能超出了实际问题的范围。我投票支持不引人注目的JavaScript建议,尽管与此相反,
\“
是一个比
\”
更安全的选择,如果您在HTML属性内操作。