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

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

JS關于函數的問題,

9-11章 訪問兄弟節點,斷斷續續弄了好幾天沒搞懂,有幾個點,需要大家解惑

?function fn(a){
??????? var x=1;
???????? while (x && x.nodeType!=1){
??????????? x=3;
????????? }
??????? return x;
??????????????? }
??? fn(4);

這段代碼,和下面的代碼,

function?get_nextSibling(n){

????????var?a=n.nextSibling;

????????while?(a?&&?a.nodeType!=1){

???????????a=a.nextSibling;

????????}

????????return?a;

????}

如果把獲取兄弟節點改成number數字,來寫的話, 1、第一段代碼中的運行原理和第二段相同么。2、第一段代碼運行不了,服務器崩潰,問題出在哪里。3??

var x=1;
???????? while (x && x.nodeType!=1){
??????????? x=3;
????????? }
??????? return x;

? var?a=n.nextSibling;

????????while?(a?&&?a.nodeType!=1){

???????????a=a.nextSibling;

????????}

????????return?a;

中,已經申明了局部函數,并進行了初始化 賦值,那while里的 ? x=3;和a=a.nextSibling;又是什么意思 ,我覺得 應該是執行while循環,如果條件成立,那么將變量 重新賦值,但是,第一種 運行不了,第二種我還沒看懂。求各位大大科普

正在回答

2 回答

ok.

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

第一段代碼你給x賦值之后他不就是文本節點了么,總之肯定不是元素節點,所以x的nodeType肯定不是1,那么只要x不是0,這個循環就會永遠持續下去,而事實上他也確實不會為0,這是一個死循環;

第二段代碼段的意義是為了找出n的下一個元素節點。默認傳入的參數n是一個節點,那么進來之后先將n的下一個節點賦給a,而n的下一個節點a可能是屬性、可能是文本、也可能是元素,還可能是空的,這就需要進入循環進行判斷找出下一個元素節點。a&&a.nodetype!=1是指,如果a不為空且a的節點類型不為1時,進入循環(元素節點的節點類型才是1),一直往下循環,直至找到一個元素節點,并將其作為返回值。

這一段基礎內容在9-7章,需要好好看一下。

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

慕粉3361053 提問者

有點沒理解上面的話 var x=1;while(x && x.nodeType!=1) 按照我的思路 申明變量x 初始化賦值為1,循環,執行條件 ,(x&&x.nodeType!=1) x和x的節點類型不等價于1時, 變量x重新初始化賦值為3 ,x=3;。 如上面所說,x.nodeType,是文本節點類型,type為3,那么 (x && x.nodeType!=1) ,是(1和3不等價于1)條件不成立,因為(1=1)了,是因為這個問題才出現死循環嗎?
2016-08-24 回復 有任何疑惑可以回復我~
#2

慕粉3361053 提問者

a&&a.nodetype!=1是指,如果a不為空且a的節點類型不為1時,進入循環(元素節點的節點類型才是1),一直往下循環,直至找到一個元素節點,并將其作為返回值。 a.nodetype!=1 我明白, a!=1為什么是不為空, 這個不為空和!=1有什么關聯; 還有個疑問,(n的下一個節點a可能是屬性、可能是文本、也可能是元素,還可能是空的,)這句話, n的下一節點不是元素、就是空節點 和文本節點,我沒見過屬性的,他是什么樣的。
2016-08-24 回復 有任何疑惑可以回復我~
#3

Sergio7 回復 慕粉3361053 提問者

因為n可能是最后一個節點,后面沒有節點了,那么通過nextSibling方法就會返回null。 屬性節點就像class,href這樣的在標簽后面這種,在DOM中也是節點。另外你好像把a&&a.nodeType!=1的運算順序弄錯了,是先分別判斷a和a,nodeType!=1的真假,再進行&&的真假判斷。
2016-08-28 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468833    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界

進入課程

JS關于函數的問題,

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

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

幫助反饋 APP下載

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

公眾號

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