是否有可能用双引号替换这些单引号?
问题描述:
我有一些麻烦,试图在下面的一段代码来代替单引号(“...”)用双引号(“...”):是否有可能用双引号替换这些单引号?
<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'">
每当我试图更换带双打的单引号,代码中断,我似乎无法找到不同的解决方案。我被告知不要使用单引号 - 这是一个例外吗?
任何帮助表示赞赏。
答
您不能在由"
字符分隔的HTML属性值内使用文字"
。它会过早地终止属性值。
您可以包含一个为"
,但这会使代码显着难以阅读。
<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"">
我已经被告知没有在所有使用单引号 - 这是一个例外?
不,您刚刚收到不好的建议。
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("Hello World")">Click Me</button>
这是非常丑陋的,但它的工作原理:HTML解析器特别寻找引号字符。
best要做的事情是停止在您的HTML中嵌入JavaScript事件处理程序设置,并纯粹使用JavaScript。
JavaScript中的单引号和双引号是可以互换的。 – Pointy
http://stackoverflow.com/questions/16450250/javascript-replace-single-quote-with-double-quote – prasanth
这大多是一种风格。如果您通常使用双引号,那么当您在表示字符串的字符串内部构建内容时,您可以使用双引号或使用单引号。由于转义是PITA,所以使用其他引用类型更容易和更安全。在这个例子中,使用HTML的双引号属性是很好的。然后使用单引号引用JS中的字符串值是完全可以接受的,事实上,我认为您无论如何都无法逃避引号,因为HTML并没有很好地处理这些问题。 – Dymos