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