使用onclick()更改图片

14

我想在点击对象时将一个图像更改为另一个图像。 代码按以下顺序堆叠:

<li><img><some text></img></li>
<li><img><some text></img></li>
<li><img><some text></img></li>
<li><img><some text></img></li>
<li><img><some text></img></li>
我希望的是,当我点击<li>元素时,将图像更改为彩色版本,即其他图像。现在,我知道我可以使用JQuery / JS来完成它。但是,我不想用大量的JS代码来完成这么简单的事情。 是否可以使用简单的东西来完成?比如伪选择器?.active类? 我想不出来。

4
HTML中没有像这样的闭合</img>标签。你只需要使用 <img src="图片的源地址" alt=""> 或者用/>替代,适用于XHTML。 - Jamie Dixon
10个回答

25

要使用JavaScript更改单击时的图像,您需要具有带有id的图像:

<p>
    <img alt="" src="http://www.userinterfaceicons.com/80x80/minimize.png" 
        style="height: 85px; width: 198px" id="imgClickAndChange" onclick="changeImage()"/>
</p>

当图片被点击时,您可以调用JavaScript函数:

function changeImage() {
    if (document.getElementById("imgClickAndChange").src == "http://www.userinterfaceicons.com/80x80/minimize.png"){
        document.getElementById("imgClickAndChange").src = "http://www.userinterfaceicons.com/80x80/maximize.png";
    } else {
        document.getElementById("imgClickAndChange").src = "http://www.userinterfaceicons.com/80x80/minimize.png";
    }
}

如果当前img.src设置为minimize.png,则此代码将将图像设置为maximize.png,反之亦然。 要了解更多详细信息,请访问: 使用JavaScript更改单击时的图像链接


16

或者可能就是这样,这可能就是答案。

<img src="path" onclick="this.src='path'">


10
这怎么样?它不需要太多编码。

$(".plus").click(function(){
 $(this).toggleClass("minus")  ; 
})
.plus{
    background-image: url("https://cdn0.iconfinder.com/data/icons/ie_Bright/128/plus_add_blue.png");
    width:130px;
    height:130px;
    background-repeat:no-repeat;
}

.plus.minus{
    background-image: url("https://cdn0.iconfinder.com/data/icons/ie_Bright/128/plus_add_minus.png");
    width:130px;
    height:130px;
    background-repeat:no-repeat;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#"><div class="plus">CHANGE</div></a>


7

如果您的图像已命名,则可以通过DOM引用它们并更改源。

document["imgName"].src="../newImgSrc.jpg";

或者

document.getElementById("imgName").src="../newImgSrc.jpg";

2

当你悬停在LI上时,最多只能触发背景图像的更改。如果你想要在点击LI后发生某些事情并保持这种状态,那么你需要使用一些JS。

我会将图片命名为bw_和clr_,然后只使用JS在它们之间进行切换。

示例:

$("#images").find('img').bind("click", function() {
  var src = $(this).attr("src"), 
      state = (src.indexOf("bw_") === 0) ? 'bw' : 'clr';

  (state === 'bw') ? src = src.replace('bw_','clr_') : src = src.replace('clr_','bw_');  

  $(this).attr("src", src);

});

链接到fiddle: http://jsfiddle.net/felcom/J2ucD/


2
在这里,当点击下一个或上一个按钮时,img标签的src属性会更改为数组中下一个或上一个值。
<div id="imageGallery">    
    <img id="image" src="http://adamyost.com/images/wasatch_thumb.gif" />
    <div id="previous">Previous</div>    
    <div id="next">Next</div>        
</div>

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>

<script>
    $( document ).ready(function() {

        var images = [
            "http://placehold.it/350x150",
            "http://placehold.it/150x150",
            "http://placehold.it/50x150"    
        ];

        var imageIndex = 0;

        $("#previous").on("click", function(){          
            imageIndex = (imageIndex + images.length -1) % (images.length);    
            $("#image").attr('src', images[imageIndex]);
        });

        $("#next").on("click", function(){
            imageIndex = (imageIndex+1) % (images.length);    
            $("#image").attr('src', images[imageIndex]);
        });

        $("#image").attr(images[0]);

    });
</script>

我可以通过修改此答案来实现这一点:jQuery数组和下一个和上一个按钮一起滚动浏览条目。请注意保留HTML标签。

1

如果您不想使用js,我认为您可以使用<a href="javascript:void(0);"></a>代替img,然后使用css,例如:

a {
  background: url('oldImage.png');
}
a:visited {
  background: url('newImage.png');
}

编辑:不好意思,它只适用于:hover


但是当然,您必须明确设置锚点的宽度和高度。 - Molecular Man

1
你可以尝试这样做:
CSS
div {
    width:200px;
    height:200px;
    background: url(img1.png) center center no-repeat;
}

.visited {
    background: url(img2.png) center center no-repeat;
}

HTML

<div href="#" onclick="this.className='visited'">
    <p>Content</p>
</div>

小提琴


1

这个脚本帮助在点击文本时更改图片:

<script>
    $(document).ready(function(){
    $('li').click(function(){
    var imgpath = $(this).attr('dir');
    $('#image').html('<img src='+imgpath+'>');
    });
    $('.btn').click(function(){
    $('#thumbs').fadeIn(500);
    $('#image').animate({marginTop:'10px'},200);
    $(this).hide();
    $('#hide').fadeIn('slow');
    });
    $('#hide').click(function(){
    $('#thumbs').fadeOut(500,function (){
    $('#image').animate({marginTop:'50px'},200);
    });
    $(this).hide();
    $('#show').fadeIn('slow');
    });
    });
    </script>


<div class="sandiv">
<h1 style="text-align:center;">The  Human  Body  Parts :</h1>
<div id="thumbs">
<div class="sanl">
<ul>
<li dir="5.png">Human-body-organ-diag-1</li>
<li dir="4.png">Human-body-organ-diag-2</li>
<li dir="3.png">Human-body-organ-diag-3</li>
<li dir="2.png">Human-body-organ-diag-4</li>
<li dir="1.png">Human-body-organ-diag-5</li>
</ul>
</div>
</div>
<div class="man">
<div id="image">
<img src="2.png" width="348" height="375"></div>
</div>
<div id="thumbs">
<div class="sanr" >
<ul>
<li dir="5.png">Human-body-organ-diag-6</li>
<li dir="4.png">Human-body-organ-diag-7</li>
<li dir="3.png">Human-body-organ-diag-8</li>
<li dir="2.png">Human-body-organ-diag-9</li>
<li dir="1.png">Human-body-organ-diag-10</li>
</ul>
</div>
</div>
<h2><a style="color:#333;" href="http://www.sanwebcorner.com/">sanwebcorner.com</a></h2>
</div>

0
function chkicon(num,allsize) {
    var  flagicon = document.getElementById("flagicon"+num).value;

    if(flagicon=="plus"){
         //alert("P== "+flagicon);

         for (var i = 0; i < allsize; i++) {
            if(document.getElementById("flagicon"+i).value !=""){
               document.getElementById("flagicon"+i).value = "plus";
               document.images["pic"+i].src  = "../images/plus.gif";
            }
          }


         document.images["pic"+num].src = "../images/minus.gif";
         document.getElementById("flagicon"+num).value = "minus";

    }else if(flagicon=="minus"){
         //alert("M== "+flagicon);

          document.images["pic"+num].src  = "../images/plus.gif";    
          document.getElementById("flagicon"+num).value = "plus";

    }else{
          for (var i = 0; i < allsize; i++) {
            if(document.getElementById("flagicon"+i).value !=""){
               document.getElementById("flagicon"+i).value = "plus";
               document.images["pic"+i].src  = "../images/plus.gif";
            }
          }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接