是否有可能用双引号替换这些单引号?

问题描述:

我有一些麻烦,试图在下面的一段代码来代替单引号(“...”)用双引号(“...”):是否有可能用双引号替换这些单引号?

<img id="image" src="images/bird.jpg" onmouseover="PlaySound('mySound'); this.src='images/bird_second_frame.jpg'" 
onmouseout="StopSound('mySound'); this.src='images/bird.jpg'"> 

每当我试图更换带双打的单引号,代码中断,我似乎无法找到不同的解决方案。我被告知不要使用单引号 - 这是一个例外吗?

任何帮助表示赞赏。

+2

JavaScript中的单引号和双引号是可以互换的。 – Pointy

+0

http://stackoverflow.com/questions/16450250/javascript-replace-single-quote-with-double-quote – prasanth

+0

这大多是一种风格。如果您通常使用双引号,那么当您在表示字符串的字符串内部构建内容时,您可以使用双引号或使用单引号。由于转义是PITA,所以使用其他引用类型更容易和更安全。在这个例子中,使用HTML的双引号属性是很好的。然后使用单引号引用JS中的字符串值是完全可以接受的,事实上,我认为您无论如何都无法逃避引号,因为HTML并没有很好地处理这些问题。 – Dymos

您不能在由"字符分隔的HTML属性值内使用文字"。它会过早地终止属性值。

您可以包含一个为&quot;,但这会使代码显着难以阅读。

<img id="image" src="images/bird.jpg" onmouseover="PlaySound(&quot;mySound&quot;); this.src=&quot;images/bird_second_frame.jpg&quot;" onmouseout="StopSound(&quot;mySound&quot;); this.src=&quot;images/bird.jpg&quot;"> 

我已经被告知没有在所有使用单引号 - 这是一个例外?

不,您刚刚收到不好的建议。

JavaScript和HTML不区分'",除非确定哪些字符可以在它们之间出现而不被转义。

在您的示例中使用'更简单易读。


更好的方法是尽量避免内联JavaScript。

<img id="image" 
    src="images/bird.jpg" 
    data-sound="mySound" 
    data-frame="images/bird_second_frame.jpg"> 

<script> 
    var element = document.getElementById("image"); 
    element.addEventListener("onmouseover", play); 
    element.addEventListener("onmouseover", stop); 

    function play() { 
     PlaySound(this.dataset.sound); 
     this.dataset.original = this.src; 
     this.src = this.dataset.frame; 
    } 

    function stop() { 
     StopSound(this.dataset.sound); 
     this.src = this.dataset.original; 
    } 
</script> 

您不能在由双引号限定的字符串中使用双引号,因为它们会结束字符串。

在这种情况下,您对单引号的使用看起来很合适。

您可以在JavaScript中自由使用单引号;它们在语法上等价于双引号字符(尽管任何单个字符串常量必须由相同类型的引号绑定)。这也适用于HTML,所以你可以通过使用属性值分隔符的单引号得到你的JavaScript双引号:

<button onclick='alert("Hello World")'>Click Me</button> 

但是,如果你真的想双引号无处不在,你能逃脱他们作为HTML实体:

<button onclick="alert(&quot;Hello World&quot;)">Click Me</button> 

这是非常丑陋的,但它的工作原理:HTML解析器特别寻找引号字符。

best要做的事情是停止在您的HTML中嵌入JavaScript事件处理程序设置,并纯粹使用JavaScript。