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

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

關于函數參數的問題

<!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">
??? function get_nextSibling(n){
??????? var x=n.nextSibling;
??????? while (x && x.nodeType!=1){
??????????? x=x.nextSibling;
??????? }
??????? return x;
??? }

??? var x=document.getElementsByTagName("li")[0];
??? document.write(x.nodeName);
??? document.write(" = ");
??? document.write(x.innerHTML);
?? ?
??? var y=get_nextSibling(x);
?? ?
??? if(y!=null){
??????? document.write("<br />nextsibling: ");
??????? document.write(y.nodeName);
??????? document.write(" = ");
??????? document.write(y.innerHTML);
??? }else{
????? document.write("<br>已經是最后一個節點");???? ?
??? }

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


其中??? function get_nextSibling(n){
??????? var x=n.nextSibling;
??????? while (x && x.nodeType!=1){
??????????? x=x.nextSibling;
??????? }
??????? return x;
??? }

1、代碼中沒有點擊函數,也沒有函數調用,為什么要定義一個函數,

2、關于function get_nextSibling(n)定義一個函數get_nextSibling,和參數n 中的參數n是什么,請各位大神通俗講解,不要復雜,我目前的狀況,自認為函數學的還可以,但是在function get_nextSibling(n)加入參數n之后就蒙圈了

正在回答

4 回答

? ? function get_nextSibling(n){
??????? var x=n.nextSibling;
??????? while (x && x.nodeType!=1){
??????????? x=x.nextSibling;
??????? }
??????? return x;
??? }

需求是找指定節點的上一個節點---這個參數n就是要傳進去的指定節點,看下邊代碼

?var x=document.getElementsByTagName("li")[0];
??? document.write(x.nodeName);
??? document.write(" = ");
??? document.write(x.innerHTML);
? ??

x是獲得的一個指定節點 ,把它當做參數傳進下邊函數
??? var y=get_nextSibling(x);

結果就是:找到一個元素節點 ?

函數中的條件(x && x.nodeType!=1?)

x 保證不是null ? ?

x.nodeType!=1保證是元素節點




0 回復 有任何疑惑可以回復我~
  1. ? var y=get_nextSibling(x); ?這個就是調用了,函數會返回一個元素節點。

  2. 參數n就是要處理的元素節點,這個函數的作用就是得到它的下一個緊按著的元素兄弟節點。

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

? function get_nextSibling(n){
??????? var x=n.nextSibling;
??????? while (x && x.nodeType!=1){
??????????? x=x.nextSibling;
??????? }
??????? return x;
??? }

??? var x=document.getElementsByTagName("li")[0];
??? document.write(x.nodeName);
??? document.write(" = ");
??? document.write(x.innerHTML);
?? ?
??? var y=get_nextSibling(x);
?? ?
??? if(y!=null){
??????? document.write("<br />nextsibling: ");
??????? document.write(y.nodeName);
??????? document.write(" = ");
??????? document.write(y.innerHTML);
??? }else{
????? document.write("<br>已經是最后一個節點");???? ?
??? }


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

var y=get_nextSibling(x); 這里不是調用函數了嗎?

之所以要定義一個函數是為了方便,假如要寫的代碼很長時,函數如果是一次性的,那么代碼會很長很繁瑣,假如我把一些特定功能代碼寫成函數,那就會方便很多,比如這里函數功能是你給出一個節點,它返回下一個相鄰的元素節點,一遇到找下一個相鄰元素節點就調用,不用重新寫了。

var x=document.getElementsByTagName("li")[0];

var y=get_nextSibling(x);

function get_nextSibling(n)

n是什么?我們結合這三句來看首先x是什么呢?x是li數組的第一個,簡稱第一個li,然后x就被函數調用了,用來賦值給形參n,也就是說現在n也是第一個li了 n=x

再看 假如 function addn(a,b){ return a+b;}

var c = addn(4,5); ?//a=4,b=5,c=a+b=9?


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

慕粉3361053 提問者

函數里的局部變量x和 全局變量的x 是兩個變量么, 還有可以把    var x=document.getElementsByTagName("li")[0]放在<script>下的第一行么,如果不可以的話,    var x=document.getElementsByTagName("li")[0]; 這個全局變量不包含函數把,代碼在下面
2016-08-21 回復 有任何疑惑可以回復我~
#2

水里有條魚 回復 慕粉3361053 提問者

可以放在第一行,局部變量x和 全局變量的x 是兩個變量,在函數里,x就是局部變量n.nextSibling,在整個<script>里x就是第一個li??梢赃@樣理解,函數里面的就是一個全新的空間,可以調用全局變量,就像做夢一樣,你進入夢里,你的身高跟你現實一樣(設為175),你把它改為180,在夢里你是180,但是回到現實你還是175。
2016-08-21 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

關于函數參數的問題

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

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

幫助反饋 APP下載

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

公眾號

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