为什么要使用;javascript:<;代码>&引用;糟糕?
可能重复:为什么要使用;javascript:<;代码>&引用;糟糕?,javascript,html,Javascript,Html,可能重复: 要在DOM事件上执行JavaScript,可以使用如下内容: <div onclick="alert('Alert');">Alert</div> Edit:为了澄清,我要问的是javascript:部分,而不是如何将内联javascript与标记混合在一起。很抱歉造成混淆。使用javascript:标签没有真正的问题。大多数时候,这被认为是一种糟糕的风格 一个onclick-处理程序已经是JavaScript了,所以重复这只是毫无意义的冗余信息(实际
要在DOM事件上执行JavaScript,可以使用如下内容:
<div onclick="alert('Alert');">Alert</div>
Edit:为了澄清,我要问的是
javascript:
部分,而不是如何将内联javascript与标记混合在一起。很抱歉造成混淆。使用javascript:
标签没有真正的问题。大多数时候,这被认为是一种糟糕的风格
- 一个
-处理程序已经是JavaScript了,所以重复这只是毫无意义的冗余信息(实际上,它通过添加一个名为onclick
-的标签来改变执行的代码,但在大多数情况下,这不会产生任何效果)JavaScript
属性中的JavaScript代码更适合放置在href
处理程序中,因此您可以使用onclick
为禁用JavaScript的用户提供链接。这就是所谓的href
<a onclick="alert('Hello World!')"...>example</a> //V1
<a href="javascript: alert('Hello World!')"...>example</a> //V2
<a onclick="javascript: alert('Hello World')"...>example</a> //V3
第三个示例(V3)与V1一样,通过[onclick]
属性绑定了一个内联的单击事件,但是执行的代码不同。执行的代码是:
javascript: alert('Hello World')
尽管它看起来像一个javascript:
url,但实际上它只是在javascript中使用了一个标签
JavaScript中的标签对于跳出嵌套循环非常有用,如下例代码所示:
label: for (i = 0; i < 5; i++) { //labeled line
for (j = 0; j < 5; j++) {
console.log(i, j);
if (i === 2 && j === 3) {
break label; //this jumps out of both for loops
}
}
}
尽管即使是这个示例也可以很容易地被类和外部化javascript所取代:
<a href="#" class="print">Print</a>
<script>
//jQuery used for brevity
$(document).on('click', '.print', function () {
window.print();
return false;
});
</script>
//jQuery用于简洁
$(文档).on('单击','.print',函数(){
window.print();
返回false;
});
许多人认为,将JavaScript与HTML混合在一起通常是不好的。(我倾向于同意。)正如@FishBasketGordo所说,这些都被认为是不好的做法,它们已经过时了。就维护而言,它们是一个令人头痛的问题。HTML代表结构,CSS代表风格,JavaScript代表功能和交互性。将它们分开可以简化代码,提高可读性,并有助于维护。内联JavaScript有很多用途,但我个人会将其限制为单个函数调用进行维护。在这一点上,没有什么区别onclick=“func()”
,以及添加要挂接到的专用类的常用方法class=“a\u class func\u class”
。感谢您的精彩解释。我想更好的问题应该是“这是什么,它做什么?”
javascript: alert('Hello World')
label: for (i = 0; i < 5; i++) { //labeled line
for (j = 0; j < 5; j++) {
console.log(i, j);
if (i === 2 && j === 3) {
break label; //this jumps out of both for loops
}
}
}
<a href="#" onclick="window.print(); return false">Print</a>
<a href="#" class="print">Print</a>
<script>
//jQuery used for brevity
$(document).on('click', '.print', function () {
window.print();
return false;
});
</script>