在我的页面上有两张最初都可见的图片
当用户点击透明图像时,隐藏了丰富的图形。 当用户点击丰富的图形时,再次隐藏丰富的图形。
我的问题是,当用户点击透明空白图像后,目前没有显示丰富的图形。下面是我到目前为止尝试过的代码。
HTML
<div id="change">
<img src="image-visable.png">
<img src="image-hidden.png">
</div>
JAVASCRIPT
var port_change, i;
window.onload = function () {
port_change = document.getElementById("change").getElementsByTagName("change");
for (i = 0; i < port_change.length; i++) {
port_change[i].style.display = "";
port_change[i].onclick = (function (k) {
var r = function () {
this.style.display = "none";
if (k >= port_change.length) { k = 0 }
port_change[k].style.display = "none";
};
return r;
})(i+1);
}
port_change[0].style.display = "";
}
PEN :http://codepen.io/anon/pen/Hbcze 有什么想法吗?
答案 0 :(得分:0)
[...]已删除以保持帖子简短 - 查看历史记录和/或 working demo
部分.getElementsByTagName("change")
很可能是.getElementsByTagName(“img”)。
一些属性(显示)被多次设置。所以我重写了你的代码
function setHideHandler()
{
return function () {
console.log("this", this);
this.style.display = "none";
};
}
function setOnLoad(){
var image;
var port_change = document.getElementById("change").getElementsByTagName("img");
for (i = 0; i < port_change.length; i++) {
image = port_change[i];
image.style.display = "";
image.onclick = setHideHandler();
}
}
使用此html
<div id="change">
<img id=t src="t.png" />
<img id=g src="g.png" />
</div>
现在您可以看到设置了一个onclick处理程序,以便在单击图像后隐藏它。用户点击任何图像(g或t)后,代码会隐藏此图像。单击两个图像后,用户无法单击任何内容以重新显示其他图像。
因此,你必须找到一种方法来交叉线。如果用户点击t,则显示g并隐藏t。现在g可见了,用户可以点击g隐藏它,你必须再次显示。这是完整的代码
function showOther(el){
if(el.nextElementSibling){
sibling = el.nextElementSibling;
}else if(el.previousElementSibling){
sibling = el.previousElementSibling;
}
sibling.style.display ='';
el.style.display = 'none';
}
function setHideHandler() {
return function () {
showOther(this);
};
}
function setOnLoad(){
var image;
var port_change = document.getElementById("change").getElementsByTagName("img");
for (i = 0; i < port_change.length; i++) {
image = port_change[i];
image.style.display = "";
image.onclick = setHideHandler();
}
}
<强> Another fully working example 强>
Ťhis example shows two images。白色图像始终可见。如果用户点击它,则切换黑色图像可见性。如果用户点击黑色图片,则会隐藏 see example here
<noscript>
您写道:In the DOM tree i see <noscript> And images are not switching. i removed this node But when i reload its again there. Why its coming on page HTML tree?
<noscript style="display: inline;">
<img class=stay src="trans.png"/>
</noscript>
我认为这超出了您的初始问题,因为我为您的问题提供了可行的解决方案。但是为了给你一些提示,你必须回答几个问题
removed the node but after a page load it is there again
我认为你至少部分使用了不受你100%控制的功能(类似于上面的wordpress链接)。请告诉我为什么你还没有接受我的回答?