js动态修改css属性display的问题

迟到_啦 2018-05-05 12:30:16

现在有一个很迷惑的问题,就是一个div块设置了display:none;
我现在通过js动态修改了这个div的display属性值为block,但是发现没效果.

然而当我不在style中写display:none,也就是style中不写这个display属性,此时我在js中动态修改的css属性就可以实现:展示/隐藏div的功能


其实我的项目另一处也有类似的问题,我想请教的是:是不是如果style中如果已经写了某个属性的值,那么通过js/jquery动态修改的话就会没效果呢?我个人一直觉得和css的优先级有关,但是一直没找到解决办法和相关解释
...全文
4289 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你这估计是优先级的问题,JS里面设置的display可能被覆盖了,建议你用谷歌浏览器右键检查,定位到JS里面,看看相关代码有没有被注释掉,如果有被注释掉,那就是被其他优先级比较高的代码覆盖了
迟到_啦 2018-05-21
  • 打赏
  • 举报
回复
引用 8 楼 jslang 的回复:
html元素的属性分两种,Property 和 Attribute property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴。 property是DOM中的属性,是JavaScript里的对象; attribute是HTML标签上的特性,它的值只能够是字符串; 对于html元素默认的基本属性,在创建的时候,每一个属性都会创建Property和Attribute, 但是我们在TAG标签中自定义的属性只会创建Attribute,不会创建Property 你的state是自定义的属性,只能以attribute获取 document.getElementById("div0").getAttribute("state") 不能以property获取 document.getElementById("div0").state 设置attribute时也是一样,应该用 document.getElementById("div0").setAttribute("state","1")
前几天再做其他部分任务,我刚测试了一下,改成setAttribute点击无法展开,直接用state反而可以,,其实我这个写法是借鉴的我一个老师的代码,它的可以实现,我的却不行,没找到原因
天际的海浪 2018-05-21
  • 打赏
  • 举报
回复
你老师可能用的不是html标签的自定义属性
天际的海浪 2018-05-21
  • 打赏
  • 举报
回复
主要是事件中state获取方式要改 <div id="div0" state="1" onclick="show(this.getAttribute('state'))">
迟到_啦 2018-05-12
  • 打赏
  • 举报
回复
引用 3 楼 jslang 的回复:
应该不会这样。你发一下html代码看看。你是不是style中加了 !important,或是你display:none设置隐藏的,和js修改的不是同一个元素


前几天回家里有点事,没看到回复,

给你看我的相关代码:

body内容


css内容


js内容


这些代码可以实现的是:
刚进网页先展示,点击隐藏userInfo内容。

而我想实现的是进网页先隐藏,点击展开userInfo内容。
天际的海浪 2018-05-12
  • 打赏
  • 举报
回复
天际的海浪 2018-05-12
  • 打赏
  • 举报
回复
html元素的属性分两种,Property 和 Attribute property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴。 property是DOM中的属性,是JavaScript里的对象; attribute是HTML标签上的特性,它的值只能够是字符串; 对于html元素默认的基本属性,在创建的时候,每一个属性都会创建Property和Attribute, 但是我们在TAG标签中自定义的属性只会创建Attribute,不会创建Property 你的state是自定义的属性,只能以attribute获取 document.getElementById("div0").getAttribute("state") 不能以property获取 document.getElementById("div0").state 设置attribute时也是一样,应该用 document.getElementById("div0").setAttribute("state","1")
lanfusen 2018-05-07
  • 打赏
  • 举报
回复
检查父级元素,是不是有干扰或继承
yt_php 2018-05-05
  • 打赏
  • 举报
回复
$('#id').css('display',true);
qq_38497889 2018-05-05
  • 打赏
  • 举报
回复
引用 2楼我是你的主体 的回复:
[quote=引用 1 楼 qq_38497889 的回复:] 看代码吧,可能是上层的元素有display:none
上层元素没有使用display属性,很简单的页面,只用了一个display,然而却没有实现我想要的效果【打开网页先隐藏,点击才展开】, 现在我只能把默认style中的display删掉,然后js动态添加这个属性值为block和none,这样的话只能实现【打开网页默认展开,点击后隐藏】[/quote]一开始设置display,none,然后点击以后,调试的时候,它的css属性有变化吗,可以截图吗
天际的海浪 2018-05-05
  • 打赏
  • 举报
回复
应该不会这样。你发一下html代码看看。你是不是style中加了 !important,或是你display:none设置隐藏的,和js修改的不是同一个元素
迟到_啦 2018-05-05
  • 打赏
  • 举报
回复
引用 1 楼 qq_38497889 的回复:
看代码吧,可能是上层的元素有display:none
上层元素没有使用display属性,很简单的页面,只用了一个display,然而却没有实现我想要的效果【打开网页先隐藏,点击才展开】, 现在我只能把默认style中的display删掉,然后js动态添加这个属性值为block和none,这样的话只能实现【打开网页默认展开,点击后隐藏】
qq_38497889 2018-05-05
  • 打赏
  • 举报
回复
看代码吧,可能是上层的元素有display:none

61,112

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧