IE7忽略my.js css规则-css/Javascript问题?

IE7忽略my.js css规则-css/Javascript问题?,javascript,css,internet-explorer-7,Javascript,Css,Internet Explorer 7,我在元素上使用class.js和.no js来区分有Javascript和没有Javascript的布局 对于元素,我添加了一个默认类'no js'。然后我在标题中包含一行脚本,document.getElementsByTagName(“html”)[0].setAttribute(“class”,“js”)将html类切换为“js”。显然,这一行代码只适用于启用了js的浏览器,因此元素将变为,而非启用js的浏览器将继续读取 然后我将简单地使用.js someElement{font-weig

我在元素上使用class.js和.no js来区分有Javascript和没有Javascript的布局

对于元素,我添加了一个默认类'no js'。然后我在标题中包含一行脚本,
document.getElementsByTagName(“html”)[0].setAttribute(“class”,“js”)
将html类切换为“js”。显然,这一行代码只适用于启用了js的浏览器,因此元素将变为,而非启用js的浏览器将继续读取

然后我将简单地使用
.js someElement{font-weight:bold;}
.no js someElement{font-weight:normal;}
来改变我的页面样式

然而,我发现这种方法在IE7上明显失败。在IE7上,这个脚本可以工作——至少看起来是这样。在开发人员工具上,它显示。但是,所有以.js开头的css样式都被IE7忽略,IE7的行为就像元素有一个.no js类一样。(查看以获得更清晰的图片。)

我无法想象这里到底出了什么问题:这是IE7在呈现CSS时的错误行为,还是脚本无法正常工作?以下是我尝试过的:

CSS

  • 更改.js和.no js声明的顺序,因为我认为可能是后者覆盖了前者导致了问题-不
  • 更改脚本和样式表的顺序,因为这可能是因为IE7在读取脚本之前读取了.no js样式表-no
  • 更改声明的特殊性-可能更具体将导致IE7阅读.js声明-不
  • 从文档中完全删除.no js类,希望IE7能够读取.js声明。不-它只是忽略了.no js和.js声明 简而言之,IE7完全忽略了存在.js声明这一事实。所以我想可能是脚本出了问题,下面是我所做的:

    Javascript

  • 我添加了'type=“text javascript”'-没有效果
  • 我尝试了
    document.documentElement
    而不是
    document.getElementsByTagName('html')[0]
    ——仍然一样
  • 我使用了
    var htmlOrWhat=document.getElementsByTagName(“html”)[0];
    警报(htmlOrWhat)
    、FF、Chrome、Opera、Safari、IE8和IE9返回“[object HtmlhLement]”,而IE7返回[object],这让我觉得IE7没有正确读取元素
  • 然后我尝试读取的id和lang属性来测试IE7是否正确地读取了元素,是的,它正确地检索了这些属性,它只是简单地拒绝对其应用.js css声明 现在,我已经束手无策(尽管我怀疑[对象]异常与我的问题有关),我希望Stackoverflow的人能帮我解决这个问题。如果有人能在这里指出IE7到底出了什么问题,以及如何修复它,我将非常感激。提前谢谢

    setAttribute()
    getAttribute()
    通常在IE7和早期版本(以及更高版本的兼容模式)中被破坏。改为使用元素的className属性

    document.getElementsByTagName(“html”)[0].className=“js”

    这里有一个提琴演示-

    SetAttribute()并不像您在IE7中预期的那样工作。创建项目后,它不会在项目上设置属性。您需要另一种方法来处理IE7中的更改

    下面的答案建议使用className属性。或者您也可以使用jQuery

    (更多信息:)

    setAttribute()和getAttribute()在IE 7中被破坏

    看看这个:

    你的区块在我手边的所有浏览器中都是灰色的,顺便说一句(JS已启用)。这可能不是答案,但它是
    “text/javascript”
    ,而不是
    “text-javascript”
    标签中的
    。你的doctype也错了-应该是,尽管这不会造成问题。谢谢poepje和John,这些都是愚蠢的打字错误,正如你所提到的,不会导致这个问题。:)谢谢你,伙计!我没有想到它可能是setAttribute()…因为它确实根据我的开发人员工具将.js类添加到html元素中。顺便问一下,你知道IE7为什么返回[object]和document.getElementsByTagName(“html”)[0];?很抱歉,YAWD,我不知道IE7为什么返回这个。感谢您准确解释setAttribute()的错误-这有助于我理解为什么选择className而不是它。干杯