2014-01-21 6 views

ответ

3

Вы можете использовать func.call, чтобы связать контекст для этого вызова функции (в противном случае в вашем случае это будет указывать на глобальный объект (окно)):

myFunction.call(this); 

или myFunction(this)

Вы должны сделать:

function myFunction(elm) { 
    elm.style.display='none'; 
} 
+0

Решенный! Большое спасибо! –

+0

Если это поможет, вы должны отметить это как ответ. – Bic

+0

'', поскольку функция вызывается из глобальной области видимости '' неверна. Функция вызывается обработчиком кликов элемента и поэтому вызывается из области действия, и область действия совершенно не имеет отношения к тому, как * этот * установлен. Он устанавливается ** только **, как вызывается функция, или с помощью * bind *. В функции * this * является глобальным объектом, потому что он не был настроен на какое-либо значение по вызову. – RobG

0

Еще лучше представить рег Истр на click событие, используя addEventListener вместо с onclick встроенного в HTML:

var theButton = document.getElementById("theButton"); 
theButton.addEventListener("click", function(e) { 
    var originalElement = e.srcElement || e.originalTarget; 
    originalElement.style.display = 'none'; 
}); 

Конечно, вы должны будете либо дать кнопку то же id я - theButton - или иначе получить его, но это гораздо более гибкий и современный способ обработки события.

+0

Хороший момент, конечно. Возможное обходное решение можно найти здесь: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener –

+0

Очевидно, что я бы предпочел использовать современную библиотеку, но я бы лучше посмотрел ничего, кроме атрибутов событий в HTML. –

Смежные вопросы