如果语句运行,则为空字符串
If statement run if empty string
如果我在控制台中执行此操作:
document.querySelectorAll('.error')
返回长度为 3 的对象。
如果任何属性值为空,则我不希望我的if语句运行:
在对此感到沮丧(我正在使用!= ''
)之后,互联网告诉我使用!== ""
下面是对象中属性的输出:
document.querySelectorAll('.error')[0]
""
document.querySelectorAll('.error')[1]
"some string"
document.querySelectorAll('.error')[2]
""
到目前为止,我对JS的陌生感可能从我的问题中可以看出来。检查空字符串以使用我所做的!==
的"最佳"方法是吗?
<script>
var errorElems = document.querySelectorAll('.error');
for(i=0; i<errorElems.length; i++) {
if(errorElems[i].textContent !== ""){
dataLayer.push({
"event": "errors",
"eventCategory": "error messages",
"eventAction": errorElems[i].id,
"eventLabel": errorElems[i].textContent
})
};
};
这似乎正在起作用。但是,如果这很重要,我是一个人在台式计算机上检查一个浏览器(Chrome)。
最完整的证据(但相当简单)意味着什么?!==
最好的测试吗?
如果它是一个空字符串,!== ""
是要走的路。如果它也可以未定义(就像选择 DOM 元素时经常发生的那样),那么您应该进行如下检查:
if (typeof string !== 'undefined' && string !== "")
空
值被解析为false,如果你只是尝试
if (!errorElems[i].textContent) {
... // error handling code here
}
根据其规范,Node.textContent 属性可以返回一个 null 值,因此最好使用如下所示的内容对其进行测试:
var errorElems = document.querySelectorAll('.error'),
errorElem;
for (i=0; i < errorElems.length; i++) {
errorElemText = errorElems[i].textContent;
if (typeof errorElemText === "string" && errorElemText !== "") {
dataLayer.push({
"event": "errors",
"eventCategory": "error messages",
"eventAction": errorElems[i].id,
"eventLabel": errorElemText
});
}
}
相关文章:
- 在Javascript中将一个值和字符串数组转换为if语句
- 替换.each语句中字符串中的字符
- 在元素中搜索字符串,然后将其放入条件语句中
- If.else语句检查NaN和空字符串是否在JavaScript中不起作用
- If语句出现字符串问题
- WebSQL:处理SQL时出错:数量为''语句字符串中的s与参数计数不匹配
- 串联字符串,缺少 ;在语句之前
- 如何从字符串执行 JS 语句
- JQuery if 语句基于在文本中包含特定字符串将数据追加到相应的 DIV
- 将变量日期与 if/else 语句中的日期(日期字符串)进行比较
- 下划线.js if 语句上的字符串连接
- Javascript 正则表达式条件语句,当在字符串中检测到两个相同字符时
- 如果语句运行,则为空字符串
- 关于字符串串联的令人困惑的 JavaScript 语句
- 介绍JS学生使用isNaN(与其他语句结合使用)提取字符串
- 如何将if语句更改为接受字符串而不是整数
- 比较 IF 语句中的字符串
- 如何在IF语句中的字符串中使用条件
- NodeJS Bug?执行在要返回的字符串之前带有换行符的返回语句时出错
- 如何使用js在字符串(语句)之间添加/删除文本