2017-02-10 84 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/

什么也没有发生的图像,当我点击:(

控制台说:遗漏的类型错误:无法设置的特性 '显示'未定义

谢谢

+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固定:) – 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

它必须使用ID?我试图避免这种情况,如果我想为所有这些元素制作动画,我不想标记每一个img元素,我非常确定它们必须有不同的方式,对吧? –

+0

@PrecastDragon不同的方式是在另一个答案。 – Barmar

+0

你必须对你自己的一组匹配元素进行迭代。 – Pointy