Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要使用;javascript:<;代码>&引用;糟糕?_Javascript_Html - Fatal编程技术网

为什么要使用;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:
标签没有真正的问题。大多数时候,这被认为是一种糟糕的风格

  • 一个
    onclick
    -处理程序已经是JavaScript了,所以重复这只是毫无意义的冗余信息(实际上,它通过添加一个名为
    JavaScript
    -的标签来改变执行的代码,但在大多数情况下,这不会产生任何效果)
  • href
    属性中的JavaScript代码更适合放置在
    onclick
    处理程序中,因此您可以使用
    href
    为禁用JavaScript的用户提供链接。这就是所谓的
要了解更多详细信息,您可能想看看这篇关于“无用的javascript:pseudo protocol”的博文。

噢,javascript的奇妙的混乱世界。您发布的代码可能与大多数程序员认为的不一样

以下各行之间存在差异:

<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>