代码之家  ›  专栏  ›  技术社区  ›  jsejcksn

document.getElementById('').src==???(等于失败)

  •  5
  • jsejcksn  · 技术社区  · 14 年前

    我的javascript是

    function changeImage(imgID) {
    var baseurl = "media/images/";
    if (document.getElementById(imgID).src == baseurl+"selection-off.png") {
        alert('Success');
        document.getElementById(imgID).src = baseurl+"selection-no.png"; }
    else {
        alert('Fail'); } }
    

    我的HTML是

    <div id="mustard" class="checkbox"><img id="mustard-img" class="no-off" src="media/images/selection-off.png" alt="checkbox" onClick="changeImage('mustard-img')" /></div>
    

    7 回复  |  直到 14 年前
        1
  •  5
  •   Gabriele Petrioli    14 年前

    一些浏览器将 img src到完整的url(包括 http://www....

    试着提醒它确保。。

    document.getElementById(imgID).src.indexOf( baseurl+"selection-off.png" ) >= 0
    

    它检查一个字符串是否包含在另一个字符串中。。

        2
  •  2
  •   Chinmayee G    14 年前

    警报字符串document.getElementById(imgID).src。它可能采用完整的路径,即包含主机名,而与之比较的字符串具有相对路径。

        3
  •  2
  •   Thariama    14 年前

    我在自己的服务器上试过你的代码。

    结果:

    document.getElementById(mustard-img).src 是 ' http://localhost/webfiles/media/images/selection-off.png'

    baseurl+"selection-off.png" 是' media/images/selection-off.png

    baseurl似乎只显示相对url。

        4
  •  2
  •   Mic    14 年前

    请尝试使用以下代码:

     <div id="mustard" class="checkbox"><img id="mustard-img" class="no-off" src="media/images/selection-off.png" alt="checkbox" onClick="changeImage(this)" /></div>
    
     <script>
     function changeImage(img) {
      if (img.src.indexOf('selection-off.png')) {
          alert('Success');
          img.src.replace(/selection-off.png/, 'selection-no.png');
      }else{
          alert('Fail');
      }
     }
     </script>
    

    与代码的区别:

    • 传递img引用: this 而不是onclick函数中的id
    • 使用 indexOf 对于相对路径,而不是==
        5
  •  1
  •   MatTheCat    14 年前

    您确定在加载脚本时生成了DOM吗?

        6
  •  1
  •   Manny    14 年前

    这是因为浏览器更改了src属性。不要这样做,而是检查和更改css类或样式属性的正确方法。

        7
  •  1
  •   Fenton    14 年前

    基于图像的复选框非常常见,但这里是完整的解决方案。

    2) 加载页面时,将“图像复选框”放在复选框旁边并隐藏该复选框

    当表单过帐时,复选框的作用类似于普通复选框。如果JavaScript被禁用或不可用,表单仍然可用。