Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.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切换css_Javascript_Css_Switch Statement - Fatal编程技术网

已禁用为Javascript切换css

已禁用为Javascript切换css,javascript,css,switch-statement,Javascript,Css,Switch Statement,我在禁用Javascript时切换css时遇到问题 我有以下代码: <style type="text/css">.nonjsonly{display:none;}.jsonly{display:inline;}</style> <noscript><style type="text/css">.nonjsonly{display:inline}.jsonly{display:none}</style></noscript>

我在禁用Javascript时切换css时遇到问题

我有以下代码:

<style type="text/css">.nonjsonly{display:none;}.jsonly{display:inline;}</style>
<noscript><style type="text/css">.nonjsonly{display:inline}.jsonly{display:none}</style></noscript>
.nonjsonly{display:none;}.jsonly{display:inline;}
.nonjsonly{display:inline}.jsonly{display:none}
Witch现在正在工作,但W3C不批准它,因为noscript在html头中是非法的(代码在头中)

你知道怎么做吗


提前感谢

处理此问题的更合适方法是首先放置非js CSS,不带任何
标记,然后是加载支持JavaScript的客户端样式表的脚本。然后,支持JS的css应该级联以覆盖基本工作表

<style type='text/css'>
  /* baseline CSS for all clients */
</style>

<!-- Then a script loads an additional stylesheet which cascades to override the baseline -->
<!-- Obviously, won't get loaded by noscript clients -->
<script type='text/javascript'>
  document.write("<link type='text/css' rel='stylesheet' href='/path/to/js-friendly.css' />");
</script>

/*所有客户端的基线CSS*/
文件。填写(“”);

将默认css放在第一位:

<style type="text/css" src="default.css" />

因此,非JS样式适用于所有人。然后使用一些JS动态加载“启用JS”样式:


css=document.createElement('link');
setAttribute('rel','stylsheet');
setAttribute('type','text/css');
css.setAttribute('href','js styles.css');//根据需要改变
document.getElementsByTagName('head')[0].appendChild(css);

这将覆盖非js样式。

您可以这样做

<script>
    document.getElementsByTagName('body')[0].className += ' jsActive';
</script>

document.getElementsByTagName('body')[0].className+='jsActive';
如果Javascript可用,该脚本将“jsActive”类写入Body元素。 您没有“noJavascipt”类,但可以使用CSS进行选择并构建函数

  • 使用1个样式表
  • 通过JavaScript向
    html
    元素添加
    .js
  • 对于需要JavaScript的样式,请在选择器前面加上
    .js
  • 例:

    变成

    .js #foo
    

    更好的方法是,使用来检测更高级的功能(它也会自动添加
    .js

    不要忘记添加空格:
    +='jsActive'
    简单有效!,非常感谢。我试着做一些复杂的事情,比如改变类属性:D
    #foo
    
    .js #foo