getElementById(“blah”)。classname =“whatever”不工作

时间:2010-07-02 20:58:52

标签: javascript jquery

Heya,我有一些我认为应该工作的代码(虽然我真的在黑暗中摸索) - 我只是想在div标签上动态更改类名。

我正在尝试将id“slider”上的div类从“visible”更改为“hidden”。关于这段代码的其他所有工作都很好,但是类不会改变。我做错了什么?

我已经尝试检查浏览器是否正确评估IE 6 - 确实如此。 if语句的第一部分中的代码,当它不是IE6时,初始化滑块。如果我用其他东西替换document.getElementById,那么代码也可以。所以我调用getElementbyId的方式一定是个问题吗?它只是在IE6中无所作为。

这就是我所拥有的:

<script type="text/javascript">


$(window).load(function() {
var isIE6 = false;
        if(/MSIE 6/i.test(navigator.userAgent)) {
          isIE6 = true;
        }

    if(!isIE6)
    {

 $('#slider').nivoSlider({
  effect:'fade', 
  slices:1,
  animSpeed:500,
  pauseTime:3000,
  startSlide:0, 
  directionNav:false,
  directionNavHide:true, 
  controlNav:true,
  controlNavThumbs:false,
      controlNavThumbsFromRel:false, 
  controlNavThumbsSearch: '.jpg', 
  controlNavThumbsReplace: '_thumb.jpg', 
  keyboardNav:true, 
  pauseOnHover:true, 
  manualAdvance:false, 
  captionOpacity:0.8
 });
 }
 else 
 {
 document.getElementById('slider').className = "hidden"; 
 }
});
</script>



<div id="slider" class="visible">
  <img src="/img/nivoslider/slide1.jpg" />
  <img src="/img/nivoslider/slide2.jpg" />
  <img src="/img/nivoslider/slide3.jpg"  />
</div><!-- end slider -->

3 个答案:

答案 0 :(得分:1)

如果您正在使用jQuery,它看起来像你,为什么不这样做:

$('#slider').addClass('hidden').removeClass('visible')

这也引出了一个问题:为什么不酌情使用$('#slider').toggle()$('#slider').hide()$('#slider').show()

答案 1 :(得分:0)

只是一个问题:你怎么知道这个名字没有改变?您是否设置了CSS样式以匹配隐藏的类。

最重要的是,如果该类的唯一目的是改变可见性,为什么不直接更改它?

document.getElementById('slider').visibility = "hidden";

如果所有这些都不起作用,并且因为您已经在使用jQuery,请尝试使用

$("#slider").hide();

答案 2 :(得分:0)

如果你想确保你正在上课,那么你不必进行添加/删除,只想使用jquery进行替换,你可以这样做:

$('#slider').attr('class', 'hidden');

or

$('#slider').attr('class', 'visible');

这样你至少可以永远不同步,它永远只是其中一个值。