IE7忽略my.js css规则-css/Javascript问题?
我在元素上使用class.js和.no js来区分有Javascript和没有Javascript的布局 对于元素,我添加了一个默认类'no js'。然后我在标题中包含一行脚本,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
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
document.documentElement
而不是document.getElementsByTagName('html')[0]
——仍然一样var htmlOrWhat=document.getElementsByTagName(“html”)[0];
警报(htmlOrWhat)
、FF、Chrome、Opera、Safari、IE8和IE9返回“[object HtmlhLement]”,而IE7返回[object],这让我觉得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而不是它。干杯