亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么while中的判斷條件是(x&&x.nodeType!=1),為什么要有x&&?


最下面是我的代碼,在get_nextSibling(n)函數中使用條件

while?(x.nodeType!=1)

結果可以運行;

可在get_previousSibling函數中使用這個條件就無法輸出else的判斷了!

簡單說:x!=1 ?這句話到底是什么意思?

<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
<title>nextSibling</title>
</head>
<body>
<ul?id="u1">???
????<li?id="a">javascript</li>???
????<li?id="b">jquery</li>???
????<li?id="c">html</li>???
</ul>???
<ul?id="u2">???
????<li?id="d">css3</li>???
????<li?id="e">php</li>???
????<li?id="f">java</li>???
</ul>

<script?type="text/javascript">




//編寫get_nextSibling?函數,獲得指定節點的下一個節點。
????function?get_nextSibling(n){
????????var?x=n.nextSibling;
????????while?(x.nodeType!=1){
????????????x=x.nextSibling;
????????}
????????return?x;
????}

//編寫get_previousSibling?函數,獲得指定節點的上一個節點。
????function?get_previousSibling(n){
??????var?x=n.previousSibling;
??????while(x&&x.nodeType!=1){
????????x=x.previousSibling;
??????}
??????return?x;
????}


????var?n=document.getElementsByTagName("li")[0];
????document.write("<br>"+n.nodeName+"?=?"+n.innerHTML);
????var?y=get_nextSibling(n);
????if(y!=null){
????????document.write("<br?/>nextsibling:?"+y.nodeName+"?=?"+y.innerHTML);

????}else{
??????document.write("<br>已經是最后一個節點");??????
????}





????var?m=document.getElementsByTagName("li")[0];
????document.write("<br><br>"+m.nodeName+"?=?"+m.innerHTML);
???var?z=get_previousSibling(m);
????if(z!==null){
??????document.write("<br>previousSibling:"+z.nodeName+"?=?"+z.innerHTML);
????}
????else{
??????document.write("<br>這已經是最上面一個節點");
????}

</script>
</body>
</html>




正在回答

1 回答

while(x && x.nodeType!=1)

這條代碼并不是你理解的x!=1 && x.nodeType!=1

而是( x) &&(?x.nodeType!=1)

與上x我想大概是判斷x非空吧

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

折翼天使I 提問者

是簡寫的可能嗎?
2016-10-27 回復 有任何疑惑可以回復我~
#2

K_Muxs 回復 折翼天使I 提問者

不是,&&的用法就是這樣的,你看看前面關于邏輯操作的內容
2016-10-27 回復 有任何疑惑可以回復我~
#3

折翼天使I 提問者 回復 K_Muxs

單寫一個x就是判斷非空嗎?
2016-10-27 回復 有任何疑惑可以回復我~
#4

折翼天使I 提問者 回復 折翼天使I 提問者

單寫一個x就是判斷非空嗎?
2016-10-27 回復 有任何疑惑可以回復我~
#5

K_Muxs 回復 折翼天使I 提問者

他的意思是 判斷 x 是不是NULL,如果不是NULL,就為真 x 節點類型不等于1,就為真 兩個都是 真 才會返回一個 真 給while判斷
2016-10-27 回復 有任何疑惑可以回復我~
#6

折翼天使I 提問者 回復 K_Muxs

我如果沒理解錯這句寫成 x!=null&&x.nodeType!=1 測試通過,謝謝,只是你先前給了個大概不確定的語氣,所以,總之,謝啦!
2016-10-27 回復 有任何疑惑可以回復我~
#7

K_Muxs 回復 折翼天使I 提問者

我理解的就是你寫的這句,因為我也才剛學到這節,看了幾個別人的問答才了解到的
2016-10-27 回復 有任何疑惑可以回復我~
#8

折翼天使I 提問者 回復 K_Muxs

我剛剛問了一個這個行業的大神,他說那個x就是一個對象,只寫一個x就代表判斷這個對象是否非空,我也是剛學
2016-10-27 回復 有任何疑惑可以回復我~
#9

學一點忘一點 回復 折翼天使I 提問者

x == true 和 單獨寫一個x是一樣的,同理,x == false 和單獨寫一個x又是一樣,這又是為什么呢,因為if語句自動給你判斷你的值是否為空(false)或不為空(true),這是代碼的簡寫
2016-11-04 回復 有任何疑惑可以回復我~
#10

學一點忘一點 回復 折翼天使I 提問者

肯定通過的,因為全局變量的x已經獲取到值,局部x也有值了,除非你寫== null,不然肯定通過的,我之前回復過,if語句自動給你判斷,且true的優先級比false高,所以單獨寫一個X 只要為true直接執行,但是在某種情況下,你要獲得false,那么你就得寫完整了,x == false 或者x != true,才會執行語句
2016-11-04 回復 有任何疑惑可以回復我~
查看7條回復

舉報

0/150
提交
取消

為什么while中的判斷條件是(x&&x.nodeType!=1),為什么要有x&&?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號