js更改css class属性

有个下拉菜单样式,弹出来的菜单在IE下距离太大了,其它都正常,我想在IE下特殊把这个class='nav-down'的top属性由120px改为100px怎么做在顶上加了... 有个下拉菜单样式,弹出来的菜单在IE下距离太大了,其它都正常,我想在IE下特殊把这个class='nav-down' 的top属性由120px改为100px怎么做
在顶上加了document.getElementByTag('nav-down').currentStyle.top='100px';
提示对象不支持此属性和方法
展开
 我来答
08物理
推荐于2017-10-04 · 知道合伙人软件行家
08物理
知道合伙人软件行家
采纳数:1141 获赞数:4137
1、国内上市公司资深运维工程师、产品经理 2、百度芝麻将,认证管理员

向TA提问 私信TA
展开全部
更改一个标签的 class 属性的代码是:

  document.getElementById( id ).className = 字符串;
  document.getElementById( id ) 用于获取标签对应的 DOM 对象,你也可以用其它方法获取。className 是 DOM 对象的一个属性,它对应于标签的 class 属性。字符串 是 class 属性的新值,它应该是一个已定义的CSS选择符。

  class 属性是在标签上引用样式表的方法之一,它的值是一个样式表的选择符,如果改变了 class 属性的值,标签所引用的样式表也就更换了,所以这属于第一种修改方法。
  利用这种办法可以把标签的CSS样式表替换成另外一个,也可以让一个没有应用CSS样式的标签应用指定的样式。

举例:

代码如下:

<style type="text/css">
.txt {
font-size: 30px; font-weight: bold; color: red;
}
</style>
<div id="tt">欢迎光临!</div>
<p><button on click="setClass()">更改样式</button></p>
<script type="text/javas cript">
function setClass()
{
document.getElementById( "tt" ).className = "txt";
}
</script>
立青日月
2011-11-16 · TA获得超过450个赞
知道小有建树答主
回答量:327
采纳率:0%
帮助的人:128万
展开全部
提示对象不支持此属性和方法,首先你的document.getElementsByTagName(“element”),这个方法拼写错误,当然会报错了!
还有就是这个方法返回的是一个节点集合。你需要确定把这个样式用在哪个元素上面!
document.getElementById('ID').style.top='100px';
嗯,这样说不清楚了,给代码帮你解决……
追问
我忘了说了,要是ID就好办了,因为下面还有几个这样的class调用,我要一起改,不能用ID,我记得有getElementByTag的,怎么不能用了,最终我想改了这个class的top属性,而不是具体哪一个ID
追答
你这样吧!
//首先得到菜单栏的节点集合(把element换成你下拉的元素)
var menu = document.getElementsByTagName(“element”)
//然后遍历循环所以的节点,当鼠标点击的时候触发事件
for(var i=0 ; i<menu.length;i++){
meun[i].onclick=function(){change(this);}
}
function change(obj){
obj.style.top="100px"
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
前端老农
2011-11-16 · 搬砖十几年,头发都还在
前端老农
采纳数:424 获赞数:1268

向TA提问 私信TA
展开全部
给这个元素加个id,例如,设置id=outNav,然后用document.getElementById("outNav")来获取对象,再进行下一步的操作

另,currentStyle应该是IE专用的吧,它的兼容性不好
追问
你说的没错,我就是针对IE距离显示问题做特殊调整的,因为有多处用到此class,单独修改一处ID没有实际效果意义,最优的做法是修改这个class,我是ie检测的,若是ie的话,既修改此class
追答
getElementsByTagName是用来获取所有同tag的元素并存入数组,不能获取相同class元素,

有一个getElementsByClassName,但是不支持IE浏览器

你可以这样子,先使用getElementsByTagName("*")取出文档中所有元素,然后进行遍历,查找className=="nav-down"的,然后再进行下一步操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NarutoYq
2011-11-16 · 超过10用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:7.8万
展开全部
document.getElementByTag('nav-down')你这个获得的是数组吧。。
document.getElementByTag('nav-down')[0].style.top="100px";试试这个
更多追问追答
追问
为啥说不支持此属性或方法
追答
搞了半天是getElementsByTagName()
你调试一下,看看这个document.getElementsByTagName('nav-down')[0]对象有没有获取到。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摩惠然0iD
2011-11-16 · TA获得超过1634个赞
知道小有建树答主
回答量:1162
采纳率:100%
帮助的人:828万
展开全部
既然有class标签了为什么不再css里面改呢
追问
css里无法进行浏览器检查,我在对IE的时候存在异常,所以只能在js中检查并修改,但修改好像没想像中的容易
追答
不出意外 就是ie6 IE7 出问题是吧  用hack就能轻松解决
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式