Сообщение от danik.js
|
Ну вы укурки ))) Два укурка ))
А теперь выдохни и посмотри на код из Контекст this для событий .
Ниче не напоминает ?
Или перестать укуриваться ) Ибо нет никакой разницы инлайн-не инлайн. Повторяю для накуренных: JavaScript не завязан на HTML. Нет никакой разницы между функцией созданной из атрибута, и функцией, присвоенной в js коде.
|
Причём тут укуриваться, чё за манера?
Вот именно, напоминает, ибо ты написал то же самое, где вызов идёт не в контексте элемента, а контексте Window. Об этом и писал мне отвечающий.
Сообщение от danik.js
|
нет никакой разницы инлайн-не инлайн.
|
При инлайн надо явно передавать this в вызове!) Ты же сам видишь.
<button id="l" onclick="f();">инлайн-метод, не передаю this</button>
<button onclick="f(this);">инлайн-метод, передаю this</button>
<script type="text/javascript">
function f(obj_this){
alert(this);
alert(obj_this);
}
//здесь в вызове не передаётся this, но в ф-ции обработчики контекст устанавливается правильно, метод не инлайновый
document.getElementById('l').onmouseover = function (e) {
console.log(this)
}
</script>
Накурился я или нет, а пример налицо. При инлайн-вызове надо просто this передавать, я запомню. И видна эта this будет лишь ф-ции, в кот-ую передаётся, а вот это говнище работать нормально не будет:
button2.onclick = function(event) {
f(event);
};
т.к. внутри обработчика вызывается левая ф-ция в контексте Window. Вот это будет:
button2.onclick = function(event) {
alert(this); //требуем this прямо в обработчике, а не посредством левой ф-ции
};
danik.js, меня отпустило
Спасибо всем отписавшимся, вот бы на сайтах, пхп посвящённых, так же оперативно и с примерами отвечали...