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

IE6/7和类名(JS/HTML)

  •  1
  • marcgg  · 技术社区  · 16 年前

    我正在尝试使用javascript更改元素的类。 到目前为止,我正在做:

    var link = document.getElementById("play_link");
    link.className = "play_button";
    

    编辑 :这是替换类名的实际代码

    在HTML中:

    <a href="#play_link_<%=i%>" id="play_link_<%=i%>"onclick="changeCurrentTo(<%=i%>);return false;" class="play_button"></a>
    

    在javascript中 函数changecurrentto(id){ 激活播放按钮(当前曲目); 当前轨道=id; 停用播放按钮(当前曲目); }

    function inactivatePlayButton(id){
        document.getElementById("recording_"+id).style.backgroundColor="#F7F2D1";
        var link = document.getElementById("play_link_"+id);
        link.className="stop_button";
        link.onclick = function(){stopPlaying();return false;};
    }
    
    function activatePlayButton(id){
        document.getElementById("recording_"+id).style.backgroundColor="";
        var link = document.getElementById("play_link_"+id);
        link.className = "play_button";
        var temp = id;
        link.onclick = function(){changeCurrentTo(temp);return false;};
    }
    

    具有

    .play_button{
        background:url(/images/small_play_button.png) no-repeat;
        width:25px;
        height:24px;
        display:block;
    }
    

    老班是

    .stop_button{
        background:url(/images/small_stop_button.png) no-repeat;
        width:25px;
        height:24px;
        display:block;
    }
    

    背景是一个音乐播放器。当您单击播放按钮(三角形)时,它将变为停止按钮(方形),并替换调用的函数。

    问题是类被改变了,但是在IE6和IE7中,新的背景(这里/images/small-play-button.png)不会立即显示。有时它甚至根本不显示。有时它不会显示,但如果我稍微摇动鼠标,它就会显示出来。

    它在FF、Chrome、Opera和Safari中都能很好地工作,所以它是一个IE bug。我知道很难马上就从这些信息中分辨出来,但如果我能得到一些有帮助的提示和方向。

    谢谢-

    3 回复  |  直到 15 年前
        1
  •  3
  •   knut    16 年前

    你应该创造 宽度为的图像 50px 还有一个高度 24px 在那里你有播放部分和停止部分。然后调整背景位置,如下所示:

    
    .button
    {
        background-image: url(/images/small_buttons.png);
        bacground-repeat: no-repeat;
        width: 25px;
        height: 24px;
        display: block;
    }
    
    .play_button
    {
        background-position: left top;
    }
    
    .stop_button
    {
        background-position: right top;
    }

    然后您同时加载“两个图像”,当您更改图像的哪个部分显示时,不会发生延迟。

    请注意,我已经创建了一个新的CSS类,这样您就不需要为不同的按钮重复您的CSS。现在需要对元素应用两个类。例子:

    <div class="button play_button"></div>
        2
  •  0
  •       16 年前

    您需要在两个函数中使用setattribute。试试看:
    link.setAttribute((document.all ? "className" : "class"), "play_button");
    link.setAttribute((document.all ? "className" : "class"), "stop_button");

        3
  •  0
  •   Øystein Riiser Gundersen    15 年前

    如果看不到确切的标记,很难说,但是IE中消失的背景图像问题可能通过添加 position: relative; .button 类和/或其父级 div .