Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getElementById(";blah";).classname=";“不管怎样”;不起作用_Javascript_Jquery - Fatal编程技术网

Javascript getElementById(";blah";).classname=";“不管怎样”;不起作用

Javascript getElementById(";blah";).classname=";“不管怎样”;不起作用,javascript,jquery,Javascript,Jquery,嘿,我有一些我认为应该可以工作的代码(尽管我在这里真的是在黑暗中摸索)——我只是在尝试动态更改div标记上的类名 我正在尝试将id“slider”上的div类从“可见”更改为“隐藏”。关于这段代码的其他一切都很好,但是类不会改变。我做错了什么 我试着检查浏览器是否正确地评估了IE6,确实如此。if语句的第一部分中的代码在不是IE6时初始化slider。如果我用其他东西替换document.getElementById,该代码也可以工作。所以我调用getElementbyId的方式一定有问题吧?它

嘿,我有一些我认为应该可以工作的代码(尽管我在这里真的是在黑暗中摸索)——我只是在尝试动态更改div标记上的类名

我正在尝试将id“slider”上的div类从“可见”更改为“隐藏”。关于这段代码的其他一切都很好,但是类不会改变。我做错了什么

我试着检查浏览器是否正确地评估了IE6,确实如此。if语句的第一部分中的代码在不是IE6时初始化slider。如果我用其他东西替换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 -->

$(窗口)。加载(函数(){
var isIE6=假;
if(/MSIE 6/i.test(navigator.userAgent)){
isIE6=真;
}
如果(!isIE6)
{
$(“#滑块”).nivoSlider({
效果:'褪色',
切片:1,
速度:500,,
暂停时间:3000,
开始滑动:0,
方向导航:错误,
方向NavHide:正确,
控制导航:是的,
controlNavThumbs:错误,
controlNavThumbsFromRel:false,
controlNavThumbsSearch:“.jpg”,
ControlNavThumbs替换:''u thumb.jpg',
键盘导航:对,
pauseOnHover:是的,
手动前进:错误,
字幕容量:0.8
});
}
其他的
{
document.getElementById('slider').className=“hidden”;
}
});

如果您使用的是jQuery,那么为什么不这样做:

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

这也引出了一个问题:为什么不使用
$(“#slider”).toggle()
$(“#slider”).hide()
$(“#slider”).show()
只是一个问题:你怎么知道类名没有改变?您是否已将CSS样式设置为与隐藏类匹配

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

document.getElementById('slider').visibility = "hidden";
如果所有这些都不起作用,并且由于您已经在使用jQuery,请尝试使用

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

如果要确保更改类,以便不必执行添加/删除操作,只需使用jquery进行替换,则可以执行以下操作:

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

or

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

这样你就永远不会失去同步,至少,它永远只是这些价值观中的一个。

谢谢你花时间回复,我非常感谢。我三个都试过了。第一个什么也没做——slider上的类名保持不变。第二个和第三个不仅隐藏了sliderdiv,还隐藏了页面的其余内容。思想?IE6/jquery问题?我们能看到更多的HTML吗?有点不对劲。你说了之后,我非常仔细地浏览了HTML。解决方案是:使用$('#slider').hide()脚本。然后我发现在滑块div之前打开的div从未关闭过。虽然滑块div被正确关闭,但关闭其上方的div会导致正确隐藏jquery幻灯片div。我想要您的代码宝贝,Ken,谢谢。这与您的问题没有太大关系,但您应该考虑在整个IE6测试中使用功能测试而不是浏览器嗅探。随着移动浏览器的爆炸式增长,在JavaScript实现中这样那样做,尝试和嗅探的内容实在太多了。只是一些值得思考的东西。谢谢你的投入。我知道类名没有改变,因为我加载了IE6,滑块div a)仍然可见,b)当我查看源代码时,类仍然显示为可见。我确实尝试过使用.hide(),但奇怪的是,它隐藏了所有内容——IE6中的滑块和滑块后面的所有内容。滑块div已正确关闭。这可能指向另一个bug?slider div中的所有内容都正确关闭了吗?改变可见性是否有效?是否定义了。隐藏在CSS中?顺便说一句,视图源代码不是动态的。您需要Firebug之类的工具或IE8+/Chrome/Safari中的开发人员工具来检查当前状态。