js編程基礎(chǔ)

一個簡單的函數(shù)可實現(xiàn)變長效果:

function setWidth() {
     var box = document.getElementById("box");
     box.style.width = "400px";
   }

看起來變色變高只需把上述代碼重復(fù)一遍诚撵,稍加改動就可以了。但是為了代碼的高效和簡潔澈驼,要盡量避免重復(fù)筛武。

function setStyle(x, y) {
      var box = document.getElementById("box");
      box.style.height = x + "px";
      box.style.background = y;
    }

上面的函數(shù)分別用兩個形參x和y代表高和背景色,解決了代碼重復(fù)的問題榴都。實際上可以把三個效果分別用三個形參表示漠其,一個函數(shù)解決所有問題。

補充:
1.頁面從上而下的解讀代碼和屎,未解讀的部分直接調(diào)用會沒有效果拴驮,實際上大部分的bug考慮到這點都是能避免的。
2.js中所有用.的部分柴信,都可以用[""]代替套啤。一般來說用.方便,有些時候不能用點的地方就只能用[""]随常。
3.js中用“”包裹起來的是字符串纲岭,一句語句里不能定下來的會變化的東西用變量表示,能定的不會變化的用字符串即常量表示线罕。
4.通過style添加或讀取是針對的行間樣式止潮。 因為行間樣式的優(yōu)先級最高钞楼,通過className(類)加的效果會不起作用喇闸,所以對于同一個元素始終使用行間或className二者中任意一種而不是混著來是非常有必要的,一般使用className(類)而不是行間樣式询件。

while循環(huán):

 var i=1;                 初始化
    while(i<5){           條件
      alert(i);           語句
      i++                 自增 
    }

for循環(huán)寫法更加簡單:

 for(var i=1;i<5;i++){   初始化+條件+自增
      alert(i);          語句
    }

全選不選及反選燃乍,復(fù)選框:

 window.onload = function () {
      var btn1 = document.getElementById("btn1");
      var btn2 = document.getElementById("btn2");
      var btn3 = document.getElementById("btn3");
      var div1 = document.getElementById("div1");
      var ckd = div1.getElementsByTagName("input");            注意:這里從div1中提取TagName。
      btn1.onclick = function () {
        for (i = 0; i < ckd.length; i++) {
          ckd[i].checked = true;
        }
      }
      btn2.onclick = function () {
      for (i = 0; i < ckd.length; i++) {
        ckd[i].checked = false;
      }
      }
      btn3.onclick = function () {
      for (i = 0; i < ckd.length; i++) {
        // 注意:這里要用==號宛琅。 
        if(ckd[i].checked == true){               前面用=是將值賦給checked屬性刻蟹,這里做判斷用==判斷checked的值是否為true。  
          ckd[i].checked = false;
        }else{
          ckd[i].checked = true;
      }
      }
      }
      }

this的使用:this可指代當(dāng)前事件的按鈕(事件的載體 一般為標(biāo)簽)嘿辟。
索引值:需要確定“第幾個”的時候舆瘪,是玩家自己創(chuàng)建的對象。使用html添加會被瀏覽器過濾红伦,使用js添加則不會英古。
innerHTML:js添加某標(biāo)簽的內(nèi)容,可識別html結(jié)構(gòu)昙读。

選項卡的實現(xiàn):

核心思路:
按鈕:先清空所有按鈕召调,再選中當(dāng)前按鈕。
內(nèi)容:先隱藏所有div,再顯示當(dāng)前div唠叛。

window.onload = function () {
  var div1 = document.getElementById("div1");
  var btn = div1.getElementsByTagName("input");
  var div = div1.getElementsByTagName("div");

這里用循環(huán)減少重復(fù)代碼 :

for (i = 0; i < btn.length; i++) {

這里用js給input標(biāo)簽添加index屬性(index是玩家自創(chuàng)的)只嚣,目的是給這幾個標(biāo)簽排號方便操作。

btn[i].index = i;
    btn[i].onclick = function () {
      for (i = 0; i < btn.length; i++) {       循環(huán)都是為了減少代碼量艺沼,這里也是精簡重復(fù)的代碼介牙。
        btn[i].className = "";                 清空所有按鈕的class
        div[i].style.display="none";           隱藏所有div
      }
      this.className = "active";               選中當(dāng)前按鈕
      div[this.index].style.display = "block"; 顯示當(dāng)前div
    }
  }
}

簡易日歷實現(xiàn):

思路:日歷按鈕原理與選項卡一致,內(nèi)容部分采用innerHTML添加標(biāo)簽的內(nèi)容澳厢。

typeof:判斷目標(biāo)的數(shù)據(jù)類型。

==:雙等號先將等式兩邊數(shù)據(jù)轉(zhuǎn)換為同一類型再比較囚似。

===:全等號不轉(zhuǎn)換直接比較剩拢。

數(shù)據(jù)顯式類型轉(zhuǎn)換(強制類型轉(zhuǎn)換):

parseInt:將字符串轉(zhuǎn)為數(shù)字(整數(shù)),原理為從左到右讀取字符串饶唤,遇到第一個非數(shù)字字符串就跳出去返回結(jié)果徐伐。

parseFloat:將字符串轉(zhuǎn)為數(shù)字(小數(shù)),原理同上募狂。

隱式類型轉(zhuǎn)換:
無具體代碼指示办素,在需要的時候計算機自動判斷轉(zhuǎn)換數(shù)據(jù)類型。

變量必須用var聲明祸穷,在函數(shù)內(nèi)部var聲明屬于局部變量性穿,在函數(shù)外部var聲明 屬于全局變量。

閉包:子函數(shù)可以使用父函數(shù)的局部變量雷滚。

變量命名遵循匈牙利命名法:

類型前綴:數(shù)組a 需曾、布爾值b、 浮點數(shù)f 祈远、 函數(shù)fn 呆万、整數(shù)i 、對象o 车份、 正則表達(dá)式re 谋减、字符串s 、變體變量v扫沼、

駝峰命名:單詞的首字母大寫出爹。

取模:%(取余)。

+=:例:i=i+1缎除,i+=1以政,i++都是一樣的意思。其中i++只能加1伴找,若想i=i+4 則只有i+=4這兩種寫法盈蛮。

if用于范圍判斷,switch用于精確判斷:

 switch(變量){
                      case 值1:
                               語句一技矮;
                               break抖誉;                 跳出/中斷 (整個循環(huán))   相應(yīng)的continue殊轴;跳出/繼續(xù)(跳出本次但繼續(xù))
                     case 值2:
                               語句二;
                               break袒炉;
                     ......
                    default:
                               語句n旁理;
                               break; 
}

判斷語句也可以用三元運算符簡寫:條件我磁?條件成立語句:條件不成立語句孽文;

數(shù)據(jù)的真假:所有非零非空的“有東西”的數(shù)據(jù)為真,反之為假夺艰。

當(dāng)下十分流行的json格式:

json和數(shù)組很像芋哭,舉個例子

var json={a:12,b:3,c:6};

var arr=[12,3,6];

alert( json.a ) ;  等效于alert(json["a"]); 等效于 alert( arr[0] ) ;

很相似,但是json的下標(biāo)是字符串郁副,數(shù)組的下標(biāo)是數(shù)字减牺。
json是很簡單的數(shù)據(jù),定義了什么 就有什么 沒定義的就沒有存谎。比如數(shù)組有l(wèi)ength拔疚,json就沒有。

數(shù)組和json主要用于循環(huán):

for(var i=1;i<arr.length;i++){
alert("haha");
}

但json沒有l(wèi)ength既荚,所以他使用另一種for in循環(huán)稚失。

for(var i in json){
alert(“哈哈哈”);
}

數(shù)組也可以用for in:

for(var i in arr){
alert(“哈哈”)恰聘;
}

但是for in循環(huán)最好還是用在json上墩虹,數(shù)組還是用for循環(huán)不容易出錯。

json可以直接像變量一樣操作:json.a++

簡單的求和函數(shù):

function sum() {
      var result = 0;
      for (i = 0; i < arguments.length; i++) {
        result += arguments[i];
      }
      return result;
    }
    alert(sum(3,15,26));

其中arguments是函數(shù)的可變參(不定參)憨琳,不定參是個數(shù)組诫钓,意味著函數(shù)的參數(shù)個數(shù)可能是無限的。

兼容IE和W3C標(biāo)準(zhǔn)瀏覽器的獲取非行內(nèi)樣式函數(shù):

 function getStyle(obj,name){
    if(obj.currentStyle){
      return obj.currentStyle.name;
    }else{
      return obj.getComputedStyle(obj,false).name;
    }
  }

push(元素):數(shù)組從尾部添加篙螟。
pop():數(shù)組從尾部刪除菌湃。

unshift(元素):從頭部添加。
shift():從頭部刪除遍略。

splice(起點惧所,長度,元素)绪杏,其中包含起點下愈,長度指幾個。
可實現(xiàn)添加(起點蕾久,0势似,元素),刪除(起點,長度)履因,替換(先刪除再添加)障簿。

var a=[1,2,3];
var b=[4,5,6];

連接數(shù)組:a.concat(b); (就變成1,2栅迄,3站故,4,5毅舆,6)
連接符:a.join(0.0); (就變成10.0西篓,20.0,3)

數(shù)組排序:a.sort()憋活;用來排字符串岂津,原理為按首字母順序排。

數(shù)字排序:因為sort只能識別字符串余掖,所以這里用一個“比較函數(shù)”幫助sort排序數(shù)字。
a.sort(function(n1礁鲁,n2){
return n1-n2; 數(shù)字從小到大排序盐欺。
});

定時器:setInterval(函數(shù),毫秒(不帶單位))仅醇;每隔一段時間執(zhí)行一次
setTimeout(函數(shù)冗美,毫秒);隔一段時間執(zhí)行函數(shù)析二。
清理定時器:clearInterval(定時器)粉洼;

簡單的例子:

<style>
    div {
      float: left;
      margin: 10px;
    }

    #div1 {
      width: 100px;
      height: 50px;
      background: red;
    }

    #div2 {
      width: 400px;
      height: 200px;
      background: gray;
    }
  </style>
  <script>
    window.onload = function () {
      var oDiv1 = document.getElementById("div1");
      var oDiv2 = document.getElementById("div2");
      var timer = null;               //變量先聲明,否則下面用就undefinded叶摄;
      oDiv2.onmouseover = oDiv1.onmouseover = function () {
        clearTimeout(timer);     //每次先清理定時器属韧,以免定時器疊加;
        oDiv2.style.display = "block";
      }
      oDiv2.onmouseout = oDiv1.onmouseout = function () {
        timer = setTimeout(function () {
          oDiv2.style.display = "none";
        }, 500);
      }
    }
  </script>
</head>

<body>
  <div id="div1"></div>
  <div id="div2"></div>
</body>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛤吓,一起剝皮案震驚了整個濱河市宵喂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌会傲,老刑警劉巖锅棕,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異淌山,居然都是意外死亡裸燎,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門泼疑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來德绿,“玉大人,你說我怎么就攤上這事〈嘌祝” “怎么了梅猿?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秒裕。 經(jīng)常有香客問我袱蚓,道長,這世上最難降的妖魔是什么几蜻? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任喇潘,我火速辦了婚禮,結(jié)果婚禮上梭稚,老公的妹妹穿的比我還像新娘颖低。我一直安慰自己,他們只是感情好弧烤,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布忱屑。 她就那樣靜靜地躺著,像睡著了一般暇昂。 火紅的嫁衣襯著肌膚如雪莺戒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天急波,我揣著相機與錄音从铲,去河邊找鬼。 笑死澄暮,一個胖子當(dāng)著我的面吹牛名段,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播泣懊,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼伸辟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了馍刮?” 一聲冷哼從身側(cè)響起自娩,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渠退,沒想到半個月后忙迁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡碎乃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年姊扔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梅誓。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡恰梢,死狀恐怖佛南,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嵌言,我是刑警寧澤嗅回,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站摧茴,受9級特大地震影響绵载,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苛白,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一娃豹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧购裙,春花似錦懂版、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至薇芝,卻和暖如春蓬抄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恩掷。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工倡鲸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留供嚎,地道東北人黄娘。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像克滴,于是被迫代替她去往敵國和親逼争。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容