4

我首先尝试了这个,但它不起作用:

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="minus.gif" OnClientClick="this.src='plus.gif';"/>

另一种方法:

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="minus.gif" OnClientClick=" return changeImg(this)"/>    

 function changeImg(cnt)
    {
    if(cnt.src='minus.gif')
    {
    cnt.src='plus.gif';
    }
    else
    {
    if(cnt.src='plus.gif')
    {
    cnt.src='minus.gif';
    }
    }
    return false;
    }
    </script>
4

2 回答 2

2

这里的问题是,在客户端单击时您不会返回 false,而是在后面的代码上触发 onlick。只返回false;避免回邮,你会得到你所尝试的。

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="minus.gif" OnClientClick="this.src='plus.gif';return false;"/>

更新

在您键入的代码上 if(cnt.src='plus.gif'),但您必须键入==,而不是=

为了避免这种类型的错误,最好先放置 const,例如 type

if('plus.gif' == cnt.src)

和最终代码

function changeImg(cnt)
    {
      if(endsWith(cnt.src, 'minus.gif'))
      {
        cnt.src='plus.gif';
      }
      else if(endsWith(cnt.src, 'plus.gif'))
      {
         cnt.src='minus.gif';
      }          
      // to avoid post back return false
      return false;
    }

function endsWith(str, suffix) {
   return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

相对:JavaScript 中的 endWith

于 2012-05-31T07:26:17.230 回答
0

以下应该工作

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="minus.gif"  onClick="function(){this.setAttribute("src", 'plus.gif');}"/>
于 2012-05-31T07:28:12.687 回答