是否可以用双引号替换这些单引号?
Is it possible to replace these single quotes with double quotes?
我在尝试将以下代码段中的单引号 ('...') 替换为双引号 ("...") 时遇到了一些问题:
<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"">
I've been told not to use single quotes at all - is this an exception?
没有。您刚刚收到了错误的建议。
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 解析器专门寻找引号字符。
最好的 做法是停止将 JavaScript 事件处理程序设置嵌入到 HTML 中,而完全使用 JavaScript .
我在尝试将以下代码段中的单引号 ('...') 替换为双引号 ("...") 时遇到了一些问题:
<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"">
I've been told not to use single quotes at all - is this an exception?
没有。您刚刚收到了错误的建议。
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 解析器专门寻找引号字符。
最好的 做法是停止将 JavaScript 事件处理程序设置嵌入到 HTML 中,而完全使用 JavaScript .