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';
提示对象不支持此属性和方法 展开
在顶上加了document.getElementByTag('nav-down').currentStyle.top='100px';
提示对象不支持此属性和方法 展开
5个回答
推荐于2017-10-04 · 知道合伙人软件行家
关注
展开全部
更改一个标签的 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>
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>
展开全部
提示对象不支持此属性和方法,首先你的document.getElementsByTagName(“element”),这个方法拼写错误,当然会报错了!
还有就是这个方法返回的是一个节点集合。你需要确定把这个样式用在哪个元素上面!
document.getElementById('ID').style.top='100px';
嗯,这样说不清楚了,给代码帮你解决……
还有就是这个方法返回的是一个节点集合。你需要确定把这个样式用在哪个元素上面!
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"
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给这个元素加个id,例如,设置id=outNav,然后用document.getElementById("outNav")来获取对象,再进行下一步的操作
另,currentStyle应该是IE专用的吧,它的兼容性不好
另,currentStyle应该是IE专用的吧,它的兼容性不好
追问
你说的没错,我就是针对IE距离显示问题做特殊调整的,因为有多处用到此class,单独修改一处ID没有实际效果意义,最优的做法是修改这个class,我是ie检测的,若是ie的话,既修改此class
追答
getElementsByTagName是用来获取所有同tag的元素并存入数组,不能获取相同class元素,
有一个getElementsByClassName,但是不支持IE浏览器
你可以这样子,先使用getElementsByTagName("*")取出文档中所有元素,然后进行遍历,查找className=="nav-down"的,然后再进行下一步操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
document.getElementByTag('nav-down')你这个获得的是数组吧。。
document.getElementByTag('nav-down')[0].style.top="100px";试试这个
document.getElementByTag('nav-down')[0].style.top="100px";试试这个
更多追问追答
追问
为啥说不支持此属性或方法
追答
搞了半天是getElementsByTagName()
你调试一下,看看这个document.getElementsByTagName('nav-down')[0]对象有没有获取到。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然有class标签了为什么不再css里面改呢
追问
css里无法进行浏览器检查,我在对IE的时候存在异常,所以只能在js中检查并修改,但修改好像没想像中的容易
追答
不出意外 就是ie6 IE7 出问题是吧 用hack就能轻松解决
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询