如何用JavaScript为<p hidden>元素添加/移除hidden属性?尝试方法无效
嘿,我来帮你搞定这个hidden属性的问题!你遇到的情况其实是因为HTML的布尔属性和普通属性的工作逻辑不一样~
先说说为什么你的操作没生效:
- 你用
setAttribute("hidden", false)时,其实是给元素加上了hidden="false"这个属性,但对于布尔属性来说,只要属性存在,不管它的值是什么,元素都会被隐藏——哪怕值是false也没用。 - 至于
removeAttribute("hidden"),理论上是有效的,会不会是你没准确定位到目标元素?可以在控制台打印myText确认一下是不是你要找的那个<p>。不过不管怎样,我给你两种更靠谱的操作方式:
移除hidden属性(显示元素)
推荐直接操作DOM元素的hidden属性,这是最直观的方法:
myText.hidden = false;
如果一定要用属性操作方法,确保选中元素后,removeAttribute的写法是对的:
myText.removeAttribute("hidden");
添加hidden属性(隐藏元素)
同样别用setAttribute设true,而是用:
myText.hidden = true;
要是你非要操作HTML属性,只要添加hidden属性即可(不需要赋值,或者赋值为空字符串):
myText.setAttribute("hidden", "");
因为布尔属性只要存在就会生效,哪怕值是空的。
另外,你找元素的代码可以稍微优化下,用数组的find方法更简洁:
const myText = Array.from(document.getElementsByTagName('p')).find(p => p.textContent.trim() === "My Text");
内容的提问来源于stack exchange,提问作者Skywarp
相关产品推荐
相关产品推荐

