为了账号安全,请及时绑定邮箱和手机立即绑定

为什么第二种写法没办法筛选出正确的结果?

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>getAttribute()</title>
</head>
<body>
<p id="intro">课程列表</p>
<ul>
    <li title="第1个li">HTML</li>
    <li>CSS</li>
    <li title="第3个li">JavaScript</li>
    <li title="第4个li">Jquery</li>
    <li>Html5</li>
</ul>
<p>以下为获取的不为空的li标签title值:</p>
<script type="text/javascript">
    var con=document.getElementsByTagName("li");
    for (var i=0; i< con.length;i++){
        //第一种写法
     /*   text=con[i].getAttribute("title");
        if(text!=null)
        {
            document.write(text+"<br>");
        }*/
     //第二种写法
       if(con[i].title!=null)
        {
            document.write(con[i].title+"<br>");
        }
    }
</script>
</body>
</html>


正在回答

5 回答

if(con[i].title!='')        
{            
document.write(con[i].title+"<br>");      
  }
  因为默认不是null。


0 回复 有任何疑惑可以回复我~
if (text) {
            document.write(text+"<br>");
        }

这样判断的话就能判断出值为null 或者""空字符的情况

0 回复 有任何疑惑可以回复我~

第二种并没有选到节点

con[i].title

改为

con[i].getAttribute("title")
就可以正确执行


0 回复 有任何疑惑可以回复我~

你的第一个方法好像也不行,看不到效果



0 回复 有任何疑惑可以回复我~
#1

周飞飞zzz

var text=con[I].......
2018-07-21 回复 有任何疑惑可以回复我~

Null的数据类型只有一个值就是null,可以做个测试:

var a = null;
var b = "";
var c;
document.wirte(a + "<br>");//输出为null
document.wirte(b + "<br>");//输出为空
document.wirte(c + "<br>");//输出为undefined

所以你第二中方法用人类语言来说就是:如果con[i].title不等于null这个判断是true的时候,然后执行后面的代码,Null的数据类型只有null一个值,在没有声明con[i].title 等于null的时候,永远都不会出现con[i].title不等于null,也就是con[i].title永远为true,这里有点绕,不知道你能不能看懂?你可以在你的第二种方法下alert一下看看,执行下面代码,会弹出5次true。

if(con[i].title!=null){
    document.write(con[i].title+"<br>");
    alert(con[i].title!=null);
}

con[1].title(第二个li元素)和con[4].title(第五个li元素)的title是空,但不是null,所以判断条件也会是true,

if(con[i].title!=null){
    document.write(con[i].title+"<br>");//第二个和第五个li元素是空,但不是null ,继续执行+ 换行符
}

你的的这个第二种方法的判断条件改成 con[i].title!=""(不等于空) 就和你第一种方法是一样的了:

if(con[i].title!=""){
    document.write(con[i].title+"<br>");//第二个和第五个li元素为空跳过执行
}


0 回复 有任何疑惑可以回复我~
#1

风起临冬

也就是值可以用null表示,属性不可以?
2018-08-02 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么第二种写法没办法筛选出正确的结果?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信