0
<script type="text/javascript">
    function unhide(divID) {
        var item = document.getElementById(divID);
        if (item) {
            item.className=(item.className=='hidden')?'unhidden':'hidden';
        }
    }
</script>

我试图弄清楚这段代码有什么问题。它为除 IE 之外的所有浏览器切换隐藏/取消隐藏。直接网站是http://lilacparadise.x10.mx/comics/。我正在帮助一个朋友,但我对 javascript 的经验很少。有人可以指出我修复此代码的正确方向吗?

4

3 回答 3

0

className在 IE 中可能无法正常工作。你能试试这个,让我知道它是否有效,

<script type="text/javascript">
    function unhide(divID) {
        var item = document.getElementById(divID);
        if (item) {
           if(item.getAttribute('class')=='hidden'){
               item.setAttribute('className', "unhidden") || item.setAttribute('class', "unhidden");
           }else{
               item.setAttribute('className', "hidden") || item.setAttribute('class', "hidden");
           }

        }
    }
</script>
于 2012-09-23T04:51:08.563 回答
0

抱歉,我遇到了电脑问题,不得不重新启动。

首先,如果您有权访问页面本身,请去掉这一行

<script type="text/javascript" src="jquery-1.3.1.js"></script>

并将其替换为:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>

那个版本的 jQuery 是在 2009 年 1 月发布的。那很古老,是时候摆脱它了。我在下面使用的$.fadeToggle()方法是在 1.4.4 中引入的。

您应该能够弄清楚我在下面做了什么。如果您有任何问题,请告诉我。这不是拖放。下面的小提琴演示中还有更多的 CSS,但我只包含了与演示相关的部分。

$(function load(){
    var $my = $('#my'),
        $comment = $my.find('.comment'),
        $siblings = $my.find('.siblings');

    $my.click(function toggle(){
        $comment.text($siblings.not(':hidden').text());

        $siblings.toggleClass('green').fadeToggle();
    });
});​

http://jsfiddle.net/userdude/ULDKg/

这是它使用的 CSS 和标记:

.siblings.hidden {
    display: none;
}
.siblings.green {
    background: green;
}

<div id="my">
    <div class="comment">Click for the comment...</div>
    <div class="siblings green">I don't know...</div>
    <div class="siblings hidden">What is it?</div>
</div>​

我已经在 Firefox、Chrome 和 IE 7-9 中进行了测试,并且运行良好。但您至少需要 v1.4.4 或更高版本。

另请注意,这使用$(document).ready(). 这意味着它一直等到页面被解析并且 DOM 准备好被访问(完整地)。您可以改用$(window).load()它,它会起作用,但是您在此处看到的内容模仿了已经完成的内容(没关系)。请记住,您需要它至少等到页面被解析,或者没有任何包装器方法的代码需要遵循它正在访问的元素。

于 2012-09-22T07:57:11.700 回答
0

我不是 100% 确定你的问题。我会建议你在 jquery 中使用切换而不是函数。剩下的 jquery 会小心的。

CSS部分。

.hidden
{
display:none
}

.visi
{
display:block
}

jQuery 部分。

$("#divid").click(function () {
      $(this).toggleClass("hidden");
    });
})

希望这会有所帮助

于 2012-09-22T06:25:44.657 回答