使用javascript更改显示属性会混淆格式化

时间:2011-07-25 15:50:55

标签: javascript jquery css

我是网页的一部分,只有在启用了javascript时才会显示。

我尝试了以下内容:

方法1:我将类设置为display: hidden;,然后在javascript通过覆盖它的情况下更改它...

<script type="text/javascript"> 
//<![CDATA[
$(document).ready(function() {
    document.getElementById('only-show-if-js-enabled').style.display = 'block';});
//]]>
</script> 


还有

方法2:我将id更改为将显示设置为块(或自动)...

<script type="text/javascript"> 
//<![CDATA[
$(document).ready(function() {
    $("#js-not-enabled").attr('id', 'js-enabled');
});
//]]>
</script> 


这两种方法似乎都会导致实际格式混乱,第一种忽略了我的css,列表样式为none,第二种是溢出被隐藏。

发生了什么事?

更新: 相当令人尴尬的是,我将溢出设置为auto,并且只是认为它被设置为隐藏。我的错。

感谢你们的回复,他们都对最佳做法等有所启发。

2 个答案:

答案 0 :(得分:0)

这应该http://jsfiddle.net/kkwan/1/

$('#only-show-if-js-enabled').show();

是的,我有点错过了这里的整个问题...嗯,如果你将display: none;更改为display: block;或者如果你将它或其他东西更改,那么css是否可以在没有你提到的代码的情况下工作?

答案 1 :(得分:0)

这种事情的现代方法是让你准备好文件就可以做到这一点:

<script type="text/javascript"> 
//<![CDATA[
$(document).ready(function() {
    $("body").addClass("js");
//]]>
</script>

然后在你的CSS中你可以使用它作为钩子,只显示启用JS(或禁用)设备的东西。

#OnlyShowWhenJsDisbaled { display: none; } /*hide by default */
body.js #OnlyShowWhenJsEnabled { display: block; } /*show when js has been confirmed*/