2017-02-10 30 views
0

HTMLimg onClick "" не работает?

<img src="http://i.pr3cast.pw/02.09.10z.png" onClick="disappear()"> 

JS

function disappear() { 
document.getElementsByTagName("img").style.display = "none"; 
} 

https://jsfiddle.net/1y42d7zm/

Ничто не происходит с изображением, когда я нажимаю :(

Console говорит: Uncaught TypeError: Невозможно установить свойство 'Дисплей' из undefined

Thanks

+1

Параметр '.getElementsByTagName()' функция возвращает ** список ** элементов, даже если есть только один соответствующий элемент на странице. – Pointy

+0

o.o что я должен использовать тогда? –

+0

Вы можете использовать это, но вам нужно извлечь фактическое целевое изображение из списка. Именно то, как вы это делаете, зависит от HTML. – Pointy

ответ

1
(function(){ 
    window.disappear = function() { 
    console.log("dissapear"); 
    document.getElementsByTagName("img")[0].style = "display: none;"; 
    }; 
}()); 

У вас его почти не было. Как отмечали другие, document.getElementsByTagName возвращает массив; вы должны указать нужный элемент [0].

Я изменил вашу функцию исчезновения, чтобы привязываться к окну, поскольку я не смог получить к ней доступ через свой CodePen. Закрытие (function(){}()) делает это так, что код будет работать, когда dom готов.

CodePen

+1

Нет, ваш код не будет работать, по той же причине, что и код OP. – Pointy

+1

@Pointy Fixed :) – matt

+0

Пожалуйста, не оставляйте точку с запятой. – Barmar

1

HTML:

<img id="to-disappear" src="http://i.pr3cast.pw/02.09.10z.png"   onClick="disappear()"> 

JS:

function disappear() { 
    document.getElementById("to-disappear").style.display = "none"; 
} 
+0

он должен использовать идентификатор? Я пытался избежать этого, я не хочу отмечать каждый элемент img, если я хочу оживить их все, я уверен, что должен быть другой способ, не так ли? –

+0

@PrecastDragon В другом ответе есть другой способ. – Barmar

+0

Вы должны выполнить итерацию по набору согласованных элементов самостоятельно. – Pointy