十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
javascript 中 offsetWidth 是對象的可見寬度,包滾動條等邊線,會隨窗口的顯示大小改變
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機(jī)域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、金水網(wǎng)站維護(hù)、網(wǎng)站推廣。
clientWidth、offsetWidth、clientHeight區(qū)別
IE6.0、FF1.06+:
offsetWidth = width + padding + border
offsetHeight = height + padding + border
IE5.0/5.5:
offsetWidth = width
offsetHeight = height
offsetwidth:是元素相對父元素的偏移寬度。等于border+padding+width
js數(shù)組遍歷某個值求和
一、增
1、push()
可接收任意數(shù)量的參數(shù),把它們逐個添加至數(shù)組末尾,并返回修改后數(shù)組的長度。例如:
2、unshift()
該方法與push()類似,也可接收任意數(shù)量的參數(shù),只不過是將參數(shù)逐個添加至數(shù)組前端而已,同樣返回新數(shù)組長度。咱們接著上面的例子:
3、concat()
該方法與push()方法有點類似,同樣是將元素添加至數(shù)組末尾,只不過這個數(shù)組已經(jīng)不是原來的那個數(shù)組了,而是其副本,所以concat()操作數(shù)組后會返回一個新的數(shù)組。具體用法如下:
① 不傳參數(shù),返回當(dāng)前數(shù)組副本
② 傳遞一或多個數(shù)組,則該方法會將這些數(shù)組中的每一項都添加到結(jié)果數(shù)組中
③ 傳遞非數(shù)組參數(shù),這些參數(shù)就會被直接添加到結(jié)果數(shù)組的末尾
繼續(xù)接著上面的栗子:
例子中一目了然,原數(shù)組保持不變,新數(shù)組后面添加了4、5、6三個元素。
4、splice()
前面的三個方法都具有很大局限性,因為不是添加到數(shù)組前就是數(shù)組后,而splice()就不一樣了,它非常靈活和強(qiáng)大。靈活是因為它可以添加元素到數(shù)組的任意位置,強(qiáng)大是因為它除了可以添加元素之外還具有刪除和替換元素的功能(這個后面會陸續(xù)講到)。
splice()可以向數(shù)組指定位置添加任意數(shù)量的元素,需要傳入至少3個參數(shù): 起始位置、0(要刪除的元素個數(shù))和要添加的元素。
依然接著上面的例子繼續(xù):
可以看出,splice()與push()和unshift()一樣是直接在原數(shù)組上修改的。
二、刪
1、pop()
與push()方法配合使用可以構(gòu)成后進(jìn)先出的棧,該方法可從數(shù)組末尾刪除最后一項并返回該項。
接著上例:
2、shift()
與push()方法配合使用可以構(gòu)成先進(jìn)先出的隊列,該方法可刪除數(shù)組第一項并返回該項。
繼續(xù)接著上例:
3、slice()
定義和用法
slice() 方法以新的數(shù)組對象,返回數(shù)組中被選中的元素。
slice() 方法選擇從給定的 start 參數(shù)開始的元素,并在給定的 end 參數(shù)處結(jié)束,但不包括。
注釋:slice() 方法不會改變原始數(shù)組。
該方法同concat()一樣是返回一個新數(shù)組,不會影響原數(shù)組,只不過slice()是用來裁剪數(shù)組的,返回裁剪下來的數(shù)組,具體用法如下:
4、splice()
好,繼續(xù)講這個“萬能”的方法。
上面講到,該方法在添加數(shù)組元素的時候需要傳入3個以上參數(shù),而其中第2個參數(shù)就是用于指定要刪除元素的個數(shù)的,那時我們傳的是數(shù)字0。那么,如果單單只需刪除元素,我們就只需給splice()傳入兩個參數(shù),第1個參數(shù)用于指定要刪除的第一項的位置,第2個參數(shù)用于指定要刪除元素的個數(shù)。
繼續(xù)上例~~
從索引項為2的位置開始刪除4個元素,所以結(jié)果為 [-1, 0, 1, 2]。
三、改
這個其實最靈活的方式就是直接使用splice()這個強(qiáng)大的方法了,其實通過以上對該方法的了解,我們大致就能知道使用該方法修改數(shù)組元素的基本原理。
原理很簡單,就是向指定位置插入任意數(shù)量的元素,且同時刪除任意數(shù)量的元素。
依然繼續(xù)上例~~
四、查
indexOf()和lastIndexOf()
這兩個方法都接收兩個參數(shù):要查找的項和(可選的)表示查找起點位置的索引。其中,indexOf()從數(shù)組的開頭(位置0)開始向后查找,lastIndexOf()方法則從數(shù)組的末尾開始向前查找。
例如:
當(dāng)找不到該元素時,返回 -1 ,lastIndexOf()方法同理。
1 數(shù)據(jù)類型
script
2 引用數(shù)據(jù)類型
object 對象類型
3 number 數(shù)字類型
包含所有的數(shù)字(整數(shù),浮點數(shù),正數(shù),負(fù)數(shù),極大極小數(shù)),Infinity(分母為零),NaN(not a number)
4 string 字符串類型
引號包含的任意文本,單雙引號都可以
輸出展示
2 比較運(yùn)算符
script
/*
1 比較運(yùn)算符
比較兩個值的大小 返回一個布爾值(true 或 false)
= = == != === !==
== 等于,只判斷數(shù)值
===全等,絕對等于,即判斷數(shù)據(jù)類型也判斷數(shù)值
!= == 取反
!== ===取反
console.log(undefined == null);//true 都沒有值
console.log(undefined === null);//false 數(shù)據(jù)類型不同undefined object
console.log(NaN == NaN); //false
console.log(NaN === NaN); //false
console.log(NaN != NaN); //true
console.log(NaN !== NaN); //true
/
/script
3 邏輯運(yùn)算符
script
/
2 邏輯運(yùn)算符
連接多個表達(dá)式,返回一個布爾值(true 或 false)
邏輯與 并且 所有的表達(dá)式都為true,結(jié)果才為true,有一個為false結(jié)果就為false
|| 邏輯或 或者 所有的表達(dá)式都為false,結(jié)果才為false,有一個為true結(jié)果就為true
! 邏輯非 取反 表達(dá)式為true取反就為true,反之亦然
注意: 邏輯與的優(yōu)先級大于邏輯或
*/
/script
邏輯運(yùn)算符演示
輸出到控制臺的結(jié)果
4 賦值運(yùn)算符
script
/*
3 賦值運(yùn)算符
= 等號右邊的值賦值給左邊
+= x += y x = x + y 下同
-=
*=
/=
%= 要的是余數(shù)
*/
/script
script
x = 7;
y = 3;
console.log(x/=y)
/script
5 算術(shù)運(yùn)算符
script
/*
算術(shù)運(yùn)算符
+ - * / %(取余,取模) ++(自增) --(自減)
%(取余,取模) 應(yīng)用 判斷奇偶數(shù)、倍數(shù)
++ 相當(dāng)于自己加1 x++ 相當(dāng)于 x = x + 1
-- 相當(dāng)于自己加1 x-- 相當(dāng)于 x = x - 1
+運(yùn)算碰到字符串,直接進(jìn)行字符串拼接,返回string類型
- * / %遇到字符串,都轉(zhuǎn)換成number類型進(jìn)行計算,如果不能轉(zhuǎn)換成數(shù)字,則返回NaN,數(shù)據(jù)類型未number
true轉(zhuǎn)換1 false轉(zhuǎn)換為0
++ --
前++和后++,對于變量自己來說沒有區(qū)別都是+1
前++ 先賦值 在加1
后++ 先加1 再賦值
/
/script
script
/ var x = 5;//number
var y = 2;//number
comsole.log(x + y);//7
comsole.log(x - y);//3
comsole.log(x * y);//10
comsole.log(x / y);//2.5
comsole.log(x % y);//1 */
\n是javascript的轉(zhuǎn)義字符將輸出一個換行符。
br /是html的標(biāo)簽表示文本另起一行。
javascript是腳本語言,而html是標(biāo)簽語言。
如果用javascipt的document.write("\n")輸出到html內(nèi),只是一個換行符,并不能起到真正換行的作用。
!---- 是html里的注釋~~ 在javascript中 函數(shù)是用{ ...} 括起來的
但是 有些模版比如說 smarty (將php 文件 和 html 分離的一種模板引擎。。。)他也可能 也 是用{....} 來把數(shù)據(jù)括起來~~所以用!---- 將js括起來~兩者就不發(fā)生沖突了~! 被括起來的 js 仍然可以執(zhí)行~ 但是 僅限script...!--...--.../script內(nèi) 如果 是 !-- script src='xxxxxxx'/script -- 這樣的話 就真的把 這個 給注釋掉了~~~因為~~ !--.....--是 HTML的注釋 而 javascript 內(nèi)部真正的注釋 是 /*....*/(多行注釋)或者//(單行注釋)