http://www.w3.org/TR/DOM-Level-3-Events/#event-interfaces
Клик JS
Записи равнозначны и показывают как назначить событию обработчик (функцию) на примере события click
<input value="Нажать" onclick="alert('клик')" type="button"/>
<input value="Нажать" onclick="raz()" type="button"/>
<script>
function raz() {
alert('клик');
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').onclick = function() {
alert('клик');
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').onclick = function() {
raz();
}
function raz() {
alert('клик');
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').onclick = raz;
function raz() {
alert('клик');
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').addEventListener("click", function() {
alert('клик');
});
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').addEventListener("click", raz);
function raz() {
alert('клик');
}
</script>
Аргументы, передающиеся в обработчик событий
<input value="Нажать" onclick="raz(1, 2)" type="button"/>
<script>
function raz(a, b) {
alert(a + b);
}
</script>
this
<!-- this указывает на текущий элемент, как document.getElementById() две записи ниже равнозначны --> <input value="Нажать" onclick="alert(this.value)" type="button"/> <input value="Нажать" id="dva" onclick="alert(document.getElementById('dva').value)" type="button"/>
<input value="Нажать" onclick="raz(this)" type="button"/>
<script>
function raz(e) {
alert(e.value);
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').onclick = function() {
alert(this.value);
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').onclick = function() {
raz(this);
}
function raz(e) {
alert(e.value);
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').onclick = this.raz; // если разместить JS после HTML-элемента
function raz() {
alert(this.value);
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').addEventListener("click", function() {
alert(this.value);
});
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').addEventListener("click", function() {
raz(this);
});
function raz(e) {
alert(e.value);
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').addEventListener("click", this.raz); // если разместить JS после HTML-элемента
function raz() {
alert(this.value);
}
</script>
event
<!-- event.currentTarget имеет тоже значение, что this --> <input value="Нажать" onclick="alert(event.currentTarget.value)" type="button"/>
<input value="Нажать" onclick="raz(event, this, 2)" type="button"/>
<script>
function raz(e, a, b) {
alert(e.currentTarget.value + '=' + a.value + ' ' + b*3 + ' всего аргументов: ' + arguments.length);
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').onclick = function(e) {
alert(e.currentTarget.value);
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').onclick = raz;
function raz(e) {
alert(e.currentTarget.value);
}
</script>
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').addEventListener("click", raz);
function raz(e) {
alert(e.currentTarget.value);
}
</script>
<!-- объект event имеет несколько свойств -->
<input value="Нажать" id="dva" type="button"/>
<script>
document.getElementById('dva').addEventListener("click", raz);
function raz(e) {
var all = '';
for(var i in e) {
all += i + ' = "' + e[i] + '";\n'
}
alert(all);
}
</script>
<!-- подробнее про координаты курсора -->
Нажить на жирный участок
<div><!-- e.target позволяет понять на какой вложенный элемент был сделан клик в пределах кнопки e.currentTarget если на участке, по которому щёлкнули, нет вложенного элемента, то e.target совпадает с e.currentTarget: то есть можно отключить срабатывание события на вложенном элементе --> <div id="dva">Нажить на <b>жирный участок <code><div></code></b></div> <script> document.getElementById('dva').addEventListener("click", raz); function raz(e) { alert(e.target.innerHTML); } </script>
Комментариев нет: