You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery if条件为真设置visibility:hidden报错的解决方法

问题场景

需要实现逻辑:当if判断条件成立时,将指定元素设置为visibility:hidden样式。
最初编写的实现代码:

if (user.privilege = 3) {
        $("#persone").css("visibility:hidden;");
}

代码执行时浏览器控制台抛出错误:

Uncaught TypeError: Cannot read properties of null (reading 'style')

其中id为persone的select元素是通过JS拼接HTML字符串动态生成的,对应生成代码如下:

var html = '<div class= "col-lg-6">'+
           '<label class="mt-15">A chi è riferito l\'evento? </label>' +
                 '<select class="form-control" id="persone" >' +
                    _this.GetOptionPersone() +
                 '</select >' +
           '</div>' ;
问题原因与修复方案

代码共有3处错误,逐一修复即可正常运行:

  • 条件判断语法错误:判断值相等需要使用===严格相等运算符,原有代码里的user.privilege = 3是赋值操作,会直接把user.privilege的值修改为3,完全不符合判断逻辑。
  • jQuery样式设置语法错误:jQuery的.css()方法设置样式时,合法写法为传入「属性名、属性值」两个参数,或是传入包含样式键值对的对象,直接传入"visibility:hidden;"属于参数格式错误,正确写法为.css("visibility", "hidden")。
  • 触发控制台报错的核心原因:执行样式设置代码时,你拼接生成的HTML字符串还没有插入到页面DOM树中,$("#persone")选择器无法找到尚未渲染的元素,返回null后再操作style属性就会抛出类型错误。必须等拼接完成的HTML通过.append()/.html()/insertAfter()等方法插入到页面DOM之后,再执行元素选择和样式设置逻辑。

参考修复代码

方案1:等DOM插入完成后再操作元素

// 先将拼接好的动态HTML插入到页面指定位置,示例为插入到id为formWrap的容器内部
$("#formWrap").html(html);
// DOM渲染完成后再执行判断和样式设置
if (user.privilege === 3) {
  $("#persone").css("visibility", "hidden");
}

方案2:拼接HTML时直接写入样式,省去后续DOM操作

// 提前判断权限,拼接select标签时直接加上对应样式
const personeStyle = user.privilege === 3 ? 'style="visibility: hidden"' : '';
var html = '<div class= "col-lg-6">'+
           '<label class="mt-15">A chi è riferito l\'evento? </label>' +
                 '<select class="form-control" id="persone" ' + personeStyle + '>' +
                    _this.GetOptionPersone() +
                 '</select >' +
           '</div>' ;
// 后续直接把html插入页面即可,不需要额外操作元素样式

内容的提问来源于stack exchange,提问作者Filippo Canino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 03:12:19