HTML事件和javascript事件之间的区别

时间:2012-09-06 04:59:30

标签: html events javascript-events

我们可以通过多种方式在HTML元素上附加事件。 第一种方式是:HTML属性

<div id="foo" onclick="print2()> My event is attached as HTML attribute</div>

第二种方法是使用一些库(比如jQuery)

<div id="bar"> My event is attached using jQuery </div>
<script>
    $("#bar").click(function() {
        alert("Hi this is Bar");
    }
</script>

我之前认为jQuery可能在内部将事件转换为相应的HTML属性,但这不会发生。请检查此http://jsfiddle.net/blunderboy/wp4RU/3/

我正在记录foo和bar的所有属性,并且看到bar没有onclick属性。 请解释一下。

1 个答案:

答案 0 :(得分:3)

没有称为HTML事件!您描述的两种类型的事件是内联事件和不显眼的事件,都是 javascript 事件。

内联事件

当您在元素本身上声明javascript代码时,它将变为内联事件。您有一些常见事件(作为HTML元素的属性),例如onclickonkeydownonkeypressonkeyup,所有这些事件都以on开头。一个这样的例子是:

<a href="#" onclick="alert('You clicked me!')">Click Me!</a>

不引人注意的事件

我们需要指定在触发事件时要执行的操作。 =符号始终在JavaScript中用于将右侧的值分配给左侧的方法或属性。

窗口不是我们可以附加事件的唯一对象。我们可以将事件附加到网页中的任何对象,前提是我们有一种唯一标识该对象的方法。识别对象的一种方法是给它一个ID并通过document.getElementById("id_of_the_element")引用它。

让我们采取相同的例子。

<a href="#" id="clickme">Click Me!</a>

而不是onclick属性,我在同一个地方有一个ID,它唯一地标识了HTML元素<a>。现在我可以通过这种方式在javascript中获取ID:

document.getElementById('clickme');

为此,我可以附加一个事件处理程序,它与我们使用属性的方式没有太大区别。它只是前面没有on。在我们之前的示例中,我们使用了onclick,但现在我们将使用click

document.getElementById('clickme').click = functionName;

这里,functionName指的是任何javascript的函数名称或匿名函数。因此,对于警报,如果我们创建一个名为alertme()的函数,我们可以这样定义:

function alertme()
{
    alert('You clicked me!');
}

现在将函数附加到元素可以这样做:

document.getElementById('clickme').click = alertme;

仍然感觉很懒,你可以使用匿名函数方式来实现它,它没有名字:

document.getElementById('clickme').click = function () {
    alert('You clicked me!');
}
希望你理解。 :)让我知道进一步澄清。