CSS知識(shí)點(diǎn)
1? 選擇器的優(yōu)先級(jí)
(1)最高優(yōu)先級(jí)是 (直接在標(biāo)簽中的設(shè)置樣式,假設(shè)級(jí)別為1000)
(2)次優(yōu)先級(jí)是(ID選擇器 ,假設(shè)級(jí)別為100)? #myDiv{color:Red;}
(3)其次優(yōu)先級(jí)是(類選擇器,假設(shè)級(jí)別為10) .divClass{color:Red;}
(4)最后優(yōu)先級(jí)是 (標(biāo)簽選擇器,假設(shè)級(jí)別是 1)? div{color:Red;}
(5)那么后代選擇器的優(yōu)先級(jí)就可以計(jì)算了啊
比如 .divClass? span { color:Red;}? 優(yōu)先級(jí)別就是:10+1=11
2 盒子模型
標(biāo)準(zhǔn)盒子模型 = margin + border + padding + content (content =? width | height)
IE盒子模型 = margin + content (content = border + padding + width | height)
3 瀏覽器
-moz代表firefox瀏覽器私有屬性
-ms代表IE瀏覽器私有屬性
-webkit代表chrome、safari私有屬性IE使用的是Trident內(nèi)核,F(xiàn)irefox 使用的是Gecko內(nèi)核。目前使用IE內(nèi)核的瀏覽器還有搜狗,遨游,360等等。
4 編碼
(1)GBK通常指GB2312編碼 只支持簡(jiǎn)體中文字
(2)utf通常指UTF-8,支持簡(jiǎn)體中文字、繁體中文字、英文、日文、韓文等語言(支持文字更廣)
(3)通常國內(nèi)使用utf-8和gb2312,看自己需求選擇
5 Bootstrap框架的網(wǎng)格系統(tǒng)工作原理如下:
(1)數(shù)據(jù)行(.row)必須包含在容器(.container)中,以便為其賦予合適的對(duì)齊方式和內(nèi)距(padding)。
(2)在行(.row)中可以添加列(.column),但列數(shù)之和不能超過平分的總列數(shù),比如12。
(3)具體內(nèi)容應(yīng)當(dāng)放置在列容器(column)之內(nèi),而且只有列(column)才可以作為行容器(.row)的直接子元素
(4)通過設(shè)置內(nèi)距(padding)從而創(chuàng)建列與列之間的間距。然后通過為第一列和最后一列設(shè)置負(fù)值的外距(margin)來抵消內(nèi)距(padding)的影響
6 H5新增標(biāo)簽:
article: 標(biāo)簽定義外部的內(nèi)容。
aside:標(biāo)簽定義 article 以外的內(nèi)容。
audio:h5新增音頻標(biāo)簽。沒有高寬屬性。
canvas:h5新增畫布標(biāo)簽。
command: 定義命令按鈕(未測(cè)試)
datalist:標(biāo)簽定義選項(xiàng)列表。 datalist 及其選項(xiàng)不會(huì)被想顯示出來,它僅僅是合法的輸入值列表。 details:標(biāo)簽用于描述文檔或文檔某個(gè)部分的細(xì)節(jié)。
figure:標(biāo)簽用于對(duì)元素進(jìn)行組合。
figcaption:定義 figure 元素的標(biāo)題。
footer:定義 section 或 document 的頁腳。
header:定義 section 或 document 的頁眉。
hgroup:用于對(duì)網(wǎng)頁或區(qū)段(section)的標(biāo)題進(jìn)行組合。
keygen:標(biāo)簽規(guī)定用于表單的密鑰對(duì)生成器字段
mark:標(biāo)簽定義帶有記號(hào)的文本。
meter:通過min="0" max="20"的方式定義度量衡。僅用于已知最大和最小值的度量。
nav:定義document或section或article的導(dǎo)航。
output:定義不同的輸出類型,比如腳本。 progress:定義任何類型的任務(wù)的進(jìn)度。
rp:定義若瀏覽器不支持 ruby 元素顯示的內(nèi)容
rt:定義 ruby 注釋的解釋
ruby:定義 ruby 注釋
section:標(biāo)簽定義文檔中的節(jié)、區(qū)段。比如章節(jié)、頁眉、頁腳或文檔中的其他部分。 source:audio和video的屬性之一。為audio和video定義媒介源。
summary:為details定義標(biāo)題。 time:定義日期或時(shí)間。
video:h5新增視頻標(biāo)簽。具有高寬屬性。
7 在樣式表定義一個(gè)樣式的時(shí)候,可以定義id也可以定義class。
(1)在CSS文件里書寫時(shí),ID加前綴"#";CLASS用"."
(2)id一個(gè)頁面只可以使用一次;class可以多次引用。
(3)ID是一個(gè)標(biāo)簽,用于區(qū)分不同的結(jié)構(gòu)和內(nèi)容,就象名字,如果一個(gè)屋子有2個(gè)人同名,就會(huì)出現(xiàn)混淆;class是一個(gè)樣式,可以套在任何結(jié)構(gòu)和內(nèi)容上,就象一件衣服;
(4)從概念上說就是不一樣的:id是先找到結(jié)構(gòu)/內(nèi)容,再給它定義樣式;class是先定義好一種樣式,再套給多個(gè)結(jié)構(gòu)/內(nèi)容。
8 CSS的flexbox布局
Flexbox可以簡(jiǎn)單快速的創(chuàng)建一個(gè)具有彈性功能的布局,當(dāng)在一個(gè)小屏幕上顯示的時(shí)候,F(xiàn)lexbox可以讓元素在容器(伸縮容器)中進(jìn)行自由擴(kuò)展和收縮,從而容易調(diào)整整個(gè)布局。它的目的是使用常見的布局模式,比如說三列布局,可以非常簡(jiǎn)單的實(shí)現(xiàn)。
一個(gè)Flexbox布局是由一個(gè)伸縮容器(flex containers)和在這個(gè)容器里的伸縮項(xiàng)目(flex items)組成。伸縮容器(flex? containers)是一個(gè)HTML標(biāo)簽元素,并且“display”屬性顯式的設(shè)置了“flex”屬性值。在伸縮容器中的所有子元素都會(huì)自動(dòng)變成伸縮項(xiàng)目(flex? items)。
9 瀏覽器的內(nèi)核引擎,基本上是四分天下:
1)Trident: IE 以Trident 作為內(nèi)核引擎;
2) Gecko: Firefox 是基于 Gecko 開發(fā);
3) WebKit: Safari, Google Chrome,傲游3,獵豹瀏覽器,百度瀏覽器 opera瀏覽器;
4) Presto: Opera的內(nèi)核,但由于市場(chǎng)選擇問題,主要應(yīng)用在手機(jī)平臺(tái)--Opera mini
注:2013年2月Opera宣布轉(zhuǎn)向WebKit引擎
注:2013年4月Opera宣布放棄WEBKIT,跟隨GOOGLE的新開發(fā)的blink引擎
10 垂直居中對(duì)齊的標(biāo)簽定義是:<vertical-align:center>
11 Web Storage分類
Web Storage實(shí)際上由兩部分組成:sessionStorage與localStorage。sessionStorage用于本地存儲(chǔ)一個(gè)會(huì)話(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁面才能訪問并且當(dāng)會(huì)話結(jié)束后數(shù)據(jù)也隨之銷毀。因此sessionStorage不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話級(jí)別的存儲(chǔ)。localStorage用于持久化的本地存儲(chǔ),除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過期的。
12 盒子模型的順序
由內(nèi)到位依次是content、padding、border、margin
13 ,設(shè)置一般用 set 開頭, 獲取采用 get 開頭;
對(duì)于鍵值的話,一般都是 (key, value)的形式;
14 btn標(biāo)簽說法
btn-group該class用于形成基本的按鈕組;
.btn-toolbar該 class 有助于把幾組結(jié)合到一個(gè)中,一般獲得更復(fù)雜的組件。
btn-group-lg, .btn-group-sm, .btn-group-xs這些 class 可應(yīng)用到整個(gè)按鈕組的大小調(diào)整,而不需要對(duì)每個(gè)按鈕進(jìn)行大小調(diào)整。
15 <label>標(biāo)簽用法input 元素定義標(biāo)注
label 元素不會(huì)向用戶呈現(xiàn)任何特殊效果。不過,它為鼠標(biāo)用戶改進(jìn)了可用性。如果您在 label 元素內(nèi)點(diǎn)擊文本,就會(huì)觸發(fā)此控件。就是說,當(dāng)用戶選擇該標(biāo)簽時(shí),瀏覽器就會(huì)自動(dòng)將焦點(diǎn)轉(zhuǎn)到和標(biāo)簽相關(guān)的表單控件上。
16 css的繼承與不繼承分類
不可繼承的:
display、margin、border、padding、background、height、min-height、max- height、width、min-width、max-width、overflow、position、left、right、top、 bottom、z-index、float、clear、table-layout、vertical-align、page-break-after、 page-bread-before和unicode-bidi。
所有元素可繼承:
visibility和cursor
內(nèi)聯(lián)元素可繼承:
letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text- decoration、text-transform、direction
塊狀元素可繼承:
text-indent和text-align
列表元素可繼承:list-style、list-style-type、list-style-position、list-style-image。
表格元素可繼承:border-collapse。
17 bootstrap輔助類
.text-muted:文字的顏色換成灰色
/.text-primary:文字的顏色變成藍(lán)色
/ .text-success:文字的顏色變成綠色
/.text-info:文字的顏色變成暗藍(lán)色
/.text-warning:文字顏色變成暗黃色
/.text-danger:文字的顏色變成紅色
18 html結(jié)構(gòu)
<head>標(biāo)簽用于定義文檔的頭部,它是所有頭部元素的容器。<head> 中的元素可以引用腳本、指示瀏覽器在哪里找到樣式表、提供元信息等等。
下面這些標(biāo)簽可用在 head 部分:<base>,<link>,<meta>,<script>,<style>,<title>,, 以及。
<title>定義文檔的標(biāo)題,它是 head 部分中唯一必需的元素。
19 超鏈接的訪問過程
為了符合瀏覽器解析CSS所遵循的就近原則,將一般的放在上面,將特殊的放在下面。
a:link; a:visited; a:hover; a:active;
a:hover必須放在a:link和a:visited之后;
a:active必須放在a:hover之后。
a:link是未訪問的鏈接;a:visited是已訪問的鏈接;a:hover是鼠標(biāo)懸停在鏈接上;a:active是被選擇的鏈接
執(zhí)行順序是從上向下
20 margin-top、padding-top的值是百分比時(shí),分別是如何計(jì)算
可以對(duì)元素的margin設(shè)置百分?jǐn)?shù),百分?jǐn)?shù)是相對(duì)于父元素的width計(jì)算,不管是margin-top/margin-bottom還是margin-left/margin-right。(padding同理)
如果沒有為元素聲明width,在這種情況下,元素框的總寬度包括外邊距取決于父元素的width,這樣可能得到“流式”頁面,即元素的外邊距會(huì)擴(kuò)大或縮小以適應(yīng)父元素的實(shí)際大小。如果對(duì)這個(gè)文檔設(shè)置樣式,使其元素使用百分?jǐn)?shù)外邊距,當(dāng)用戶修改瀏覽窗口的寬度時(shí),外邊距會(huì)隨之?dāng)U大或縮小。
為什么margin-top/margin-bottom的百分?jǐn)?shù)也是相對(duì)于width而不是height呢?
CSS權(quán)威指南中的解釋:
我們認(rèn)為,正常流中的大多數(shù)元素都會(huì)足夠高以包含其后代元素(包括外邊距),如果一個(gè)元素的上下外邊距時(shí)父元素的height的百分?jǐn)?shù),就可能導(dǎo)致一個(gè)無限循環(huán),父元素的height會(huì)增加,以適應(yīng)后代元素上下外邊距的增加,而相應(yīng)的,上下外邊距因?yàn)楦冈豩eight的增加也會(huì)增加,如果循環(huán)。
21? cookies作用
cookies一般是用于自動(dòng)登錄呀(如淘寶,京東一些可以勾選自動(dòng)登錄),這就相當(dāng)于進(jìn)行從登錄頁到主頁的跳轉(zhuǎn)了,頁面之間傳遞著用戶的信息,以鍵值對(duì)的方式存儲(chǔ)著用戶的信息,當(dāng)然登錄跳轉(zhuǎn)也用到了其他以鍵值對(duì)存儲(chǔ)的信息,如session(服務(wù)端保持,一些需要登錄以后才可以訪問的就需要session校驗(yàn),如果是大項(xiàng)目開發(fā)的話會(huì)用到過濾器) cookies主要用于客戶端保持,當(dāng)然了,cookies怎么可能對(duì)數(shù)據(jù)庫進(jìn)行操作呢,cookies是保存在客戶端的。
22 Doctype不存在或錯(cuò)誤,瀏覽器默認(rèn)混雜模式
23 HTML文檔中的圖像格式
常用的頁面的圖片格式有三種,GIF、JPG、PNG。GIF 意為Graphics Interchange format(圖形交換格式);JPEG 代表Joint Photograhic Experts Group(聯(lián)合圖像專家組),這種格式經(jīng)常寫成JPG,JPG圖片的擴(kuò)展名為jpg;流式網(wǎng)絡(luò)圖形格式(Portable Network Graphic Format,PNG)名稱來源于非官方的“PNG's Not GIF”,是一種位圖文件(bitmap file)存儲(chǔ)格式,讀成“ping”。PNG用來存儲(chǔ)灰度圖像時(shí),灰度圖像的深度可多到16位,存儲(chǔ)彩色圖像時(shí),彩色圖像的深度可多到48位,并且還可存儲(chǔ)多到16位的α通道數(shù)據(jù)。
標(biāo)簽圖像文件格式(Tagged Image File Format,簡(jiǎn)寫為TIFF)是一種靈活的位圖格式,主要用來存儲(chǔ)包括照片和藝術(shù)圖在內(nèi)的圖像。TIFF文件格式適用于在應(yīng)用程序之間和計(jì)算機(jī)平臺(tái)之間的交換文件,它的出現(xiàn)使得圖像數(shù)據(jù)交換變得簡(jiǎn)單。TIFF文件以.tif為擴(kuò)展名。其數(shù)據(jù)格式是一種3級(jí)體系結(jié)構(gòu),從高到低依次為:文件頭、一個(gè)或多個(gè)稱為IFD的包含標(biāo)記指針的目錄和數(shù)據(jù)。
定義文檔的標(biāo)題,它是 head 部分中唯一必需的元素。
24 使用table表現(xiàn)數(shù)據(jù)時(shí),有時(shí)候表現(xiàn)出來的會(huì)比自己實(shí)際設(shè)置的寬度要寬,為此需要設(shè)置下面哪些屬性值
cellpadding 屬性規(guī)定單元邊沿與其內(nèi)容之間的空白。
注釋:請(qǐng)勿將該屬性與cellspacing 屬性相混淆,cellspacing 屬性規(guī)定的是單元之間的空間。
從實(shí)用角度出發(fā),最好不要規(guī)定 cellpadding,而是使用 CSS 來添加內(nèi)邊距。
25 通過使用 word-break 屬性,可以讓瀏覽器實(shí)現(xiàn)在任意位置的換行。

26 white-space 屬性設(shè)置如何處理元素內(nèi)的空白。

27 submit 和onsubmit 函數(shù)
submit() 方法觸發(fā) submit 事件,或規(guī)定當(dāng)發(fā)生 submit 事件時(shí)運(yùn)行的函數(shù)。
onsubmit只是一種綁定事件的方式,如果不用這種事件綁定方式,比如addEventListener,eventType應(yīng)該是submit而不是onsubmit。
onsubmit 事件會(huì)在表單中的確認(rèn)按鈕被點(diǎn)擊時(shí)發(fā)生。
語法 onsubmit="SomeJavaScriptCode"
28 Bootstrap 柵格系統(tǒng)
(1)第一步:創(chuàng)建柵格系統(tǒng)的容器

解釋:為了寄予柵格系統(tǒng)合適的排列和padding,要把每一行“row”包含在一個(gè)容器中,而這個(gè)容器我們用class名為“container”或者“container-fluid”,這兩個(gè)class是Bootstrap為我們事先設(shè)計(jì)好的
.container是固定寬度,居中顯示:下面是Bootstrap中.container類的代碼

.container-fluid是 100% 寬度:下面是Bootstrap中.container-fluid類的代碼

(2)第二步:創(chuàng)建合適的柵格系統(tǒng)

解釋:上面這段是我從Bootstrap官網(wǎng)復(fù)制下來的,每一個(gè)“row”代表一行,而內(nèi)部的“col-md-數(shù)字”代表一個(gè)單元格;
Bootstrap把每一行分成12等份,“col-md-數(shù)字”中的“數(shù)字”從1-12中取,數(shù)字等于幾,就占幾份;
合理的選擇單元格的數(shù)字配置,再往單元格中添加我們想要的內(nèi)容,這樣一個(gè)柵格系統(tǒng)就完成了!
(3)進(jìn)階:?jiǎn)卧竦念愡€有其他選擇,一共有四種:
.c0l-xs- 無論屏幕寬度如何,單元格都在一行,寬度按照百分比設(shè)置;試用于手機(jī);
.col-sm- 屏幕大于768px時(shí),單元格在一行顯示;屏幕小于768px時(shí),獨(dú)占一行;試用于平板;
.col-md- 屏幕大于992px時(shí),單元格在一行顯示;屏幕小于992px時(shí),獨(dú)占一行;試用于桌面顯示器;
.col-lg- 屏幕大于1200px時(shí),單元格在一行顯示;屏幕小于1200px時(shí),獨(dú)占一行;適用于大型桌面顯示器;
以上的情況可以通過下面的代碼清晰的理解:

屏幕大于992px時(shí):.col-md-8 和.col-md-4 還處于 作用范圍內(nèi),如下

屏幕在769px-992px之間時(shí):.col-md-已失效,而.col-sm- 還處在 作用范圍內(nèi),如下

屏幕寬度小于768px時(shí),.col-sm-已失效? 只有.col-xs- 不受屏幕寬度影響,這時(shí)候就由.col-xs-起作用,如下

29 bootstrap的表格屬性

30 CSS Sprites
1.簡(jiǎn)介
CSS Sprites在國內(nèi)很多人叫css精靈,是一種網(wǎng)頁圖片應(yīng)用處理方式。它允許將一個(gè)頁面涉及到的所有零星圖片都包含到一張大圖中, 利用CSS的“background-image”,“background- repeat”,“background-position”的組合進(jìn)行背景定位, 訪問頁面時(shí)避免圖片載入緩慢的現(xiàn)象。
2.優(yōu)點(diǎn)
(1)CSS Sprites能很好地減少網(wǎng)頁的http請(qǐng)求,從而大大的提高頁面的性能,這是CSS Sprites最大的優(yōu)點(diǎn),也是其被廣泛傳播和應(yīng)用的主要原因;
(2)CSS Sprites能減少圖片的字節(jié);
(3)CSS Sprites解決了網(wǎng)頁設(shè)計(jì)師在圖片命名上的困擾,只需對(duì)一張集合的圖片命名,不需要對(duì)每一個(gè)小圖片進(jìn)行命名,從而提高了網(wǎng)頁制作效率。
(4)CSS Sprites只需要修改一張或少張圖片的顏色或樣式來改變整個(gè)網(wǎng)頁的風(fēng)格。
3.缺點(diǎn)
(1)圖片合并麻煩:圖片合并時(shí),需要把多張圖片有序的合理的合并成一張圖片,并留好足夠的空間防止版塊出現(xiàn)不必要的背景。
(2)圖片適應(yīng)性差:在高分辨的屏幕下自適應(yīng)頁面,若圖片不夠?qū)挄?huì)出現(xiàn)背景斷裂。
(3)圖片定位繁瑣:開發(fā)時(shí)需要通過工具測(cè)量計(jì)算每個(gè)背景單元的精確位置。
(4)可維護(hù)性差:頁面背景需要少許改動(dòng),可能要修改部分或整張已合并的圖片,進(jìn)而要改動(dòng)css。在避免改動(dòng)圖片的前提下,又只能(最好)往下追加圖片,但這樣增加了圖片字節(jié)。
31 Canvas 對(duì)象的方法

1.html5中沒有g(shù)etContent()和getCanvas方法
2.調(diào)用canvas對(duì)象的getContext()方法來獲取繪圖環(huán)境
31 border-style:none和border-width:0的比較
1.效果
border-style:none;//無邊框
border-width:0;//邊框?qū)挾葹?px
2.區(qū)別
(1)性能差異
border:0;瀏覽器對(duì)border-width、border-color進(jìn)行渲染,占用內(nèi)存。
border:none;瀏覽器不進(jìn)行渲染,不占用內(nèi)存。
Chrome:
border:none;>> border:initial none initial;
border:0;>> border:0 initial? initial ;
Firefox、360:
border:none; >>border:medium none;
border:0;>> border:0 none;
計(jì)算出的樣式:
border:0px none 元素color屬性值;
(2)瀏覽器兼容
IE7-不支持border:none;
W3C提示:請(qǐng)始終把border-style屬性聲明到border-color屬性之前,元素必須在改變顏色之前獲得邊框。
32 getCurrentPosition()獲取用戶當(dāng)前位置放入一個(gè)值中保存,getLocation()地圖定位
33 瀏覽器引擎
瀏覽器解析渲染頁面原理
瀏覽器 最重要 最核心的部分是“解釋引擎”,也就是“瀏覽器內(nèi)核”: 負(fù)責(zé)對(duì)網(wǎng)頁語法的解釋(如HTML、JavaScript)并渲染(顯示)網(wǎng)頁。
網(wǎng)頁的工作過程需要使用到兩個(gè)引擎:渲染引擎和javascript引擎
什么是JavaScript引擎?簡(jiǎn)單來講,就是能夠提供執(zhí)行JavaScript代碼的運(yùn)行環(huán)境
所以,通常所謂的瀏覽器內(nèi)核也就是瀏覽器所采用的渲染引擎,排版引擎(Rendering Engine,也有稱渲染引擎),渲染引擎決定了瀏覽器如何顯示網(wǎng)頁的內(nèi)容以及頁面的格式信息。不同的瀏覽器內(nèi)核對(duì)網(wǎng)頁編寫語法的解釋也有不同,因此同一網(wǎng)頁在不同的內(nèi)核的瀏覽器里的渲染(顯示)效果也可能不同,這也是網(wǎng)頁編寫者需要在不同內(nèi)核的瀏覽器中測(cè)試網(wǎng)頁顯示效果的原因。
瀏覽器內(nèi)核很多,如果加上所有的幾乎沒有什么人在用的非商業(yè)的免費(fèi)內(nèi)核,那么可能大約有10款以上甚至更多,不過通常我們比較常見的大約只有以下四種:
- Trident :[?tra?dnt]
IE瀏覽器(遨游、世界之窗、騰訊TT…都是IE)Trident內(nèi)核最慢
IE 以Trident 作為內(nèi)核引擎 ,前綴為–ms。
- Gecko:[?gek??]
- 開放源代碼、以C++編寫的網(wǎng)頁排版引擎,是跨平臺(tái)的
FireFox是基于 Gecko 開發(fā);
-presto:[?prest??]
目前公認(rèn)網(wǎng)頁瀏覽速度最快的瀏覽器內(nèi)核,然而代價(jià)是犧牲了網(wǎng)頁的兼容性。由Opera Software開發(fā)的瀏覽器排版引擎,Opera(歐朋瀏覽器),但由于市場(chǎng)選擇問題,主要應(yīng)用在手機(jī)平臺(tái)–Opera mini
- Webkit:
蘋果公司自己的內(nèi)核,google的chrome也使用webkit作為內(nèi)核。
是一個(gè)開源的瀏覽器引擎,同時(shí)WebKit 也是蘋果Mac OS X 系統(tǒng)引擎框架版本的名稱,它擁有清晰的源碼結(jié)構(gòu)、極快的渲染速度,包含的 WebCore 排版引擎和 JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來。
許多網(wǎng)站都是按照IE來架設(shè)的,很多網(wǎng)站不兼容Webkit內(nèi)核,比如登錄界面、網(wǎng)銀等網(wǎng)頁均不可使用Webkit內(nèi)核的瀏覽器。
Safari([s??fɑri]), Google Chrome, 傲游3, 獵豹瀏覽器, 百度瀏覽器 opera瀏覽器 基于 Webkit 開發(fā)。
注:2013年2月Opera宣布轉(zhuǎn)向WebKit引擎
注:2013年4月Opera宣布放棄WEBKIT,跟隨GOOGLE的新開發(fā)的blink引擎
34 innerHTML 屬性
innerHTML 屬性設(shè)置或返回表格行的開始和結(jié)束標(biāo)簽之間的 HTML。
Javascript知識(shí)點(diǎn)
1 call函數(shù)和apply函數(shù)
作用
在特定的作用域總調(diào)用函數(shù),等于設(shè)置函數(shù)體內(nèi)this對(duì)象的值,以擴(kuò)充函數(shù)賴以運(yùn)行的作用域。
window.color="red";
var o={color:"blue"};
function getColor(){
console.log(this.color);
}
getColor.call(this);
getColor.call(window);
getColor.call(o);
2.call()和apply()區(qū)別
接收參數(shù)的方式不同:
對(duì)于call(),第一個(gè)參數(shù)是運(yùn)行函數(shù)的作用域,其余參數(shù)都直接傳遞給函數(shù)即傳遞給函數(shù)的參數(shù)必須逐個(gè)列舉出來。
對(duì)于apply(),第一個(gè)參數(shù)是運(yùn)行函數(shù)的作用域,另一個(gè)參數(shù)是參數(shù)數(shù)組,可以是Array實(shí)例或arguments對(duì)象。
function sum(num1,num2){
return num1+num2;
}
function callSum(num1,num2){
return sum.call(this,num1,num2);
}
function callSum(num1,num2){
return sum.apply(this,arguments);
}
function callSum(num1,num2){
return sum.apply(this,[num1,num2]);
}
2? js對(duì)象是否是Array,arr為要判斷的對(duì)象

3 angularjs1中的服務(wù)實(shí)質(zhì)上是
單例模式是一種常用的軟件設(shè)計(jì)模式。在它的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例的特殊類。通過單例模式可以保證系統(tǒng)中一個(gè)類只有一個(gè)實(shí)例而且該實(shí)例易于外界訪問,從而方便對(duì)實(shí)例個(gè)數(shù)的控制并節(jié)約系統(tǒng)資源。如果希望在系統(tǒng)中某個(gè)類的對(duì)象只能存在一個(gè),單例模式是最好的解決方案。
單例模式的要點(diǎn)有三個(gè);一是某個(gè)類只能有一個(gè)實(shí)例;二是它必須自行創(chuàng)建這個(gè)實(shí)例;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
angularjs的服務(wù)是一個(gè)單例對(duì)象或函數(shù),對(duì)外提供特定的功能。
4 原生的js的禁用
①disabled和readOnly都是表單的公有屬性,readOnly是只讀,disabled是禁用。這里問的是禁用,所以是disabled。
②還有就是題目中的readOnly寫成了readolny
③小知識(shí)點(diǎn):setArrtibute在ie7以前是不能通過style和class設(shè)置屬性的
5 JavaScript的prototype屬性
prototype 屬性使您有能力向?qū)ο筇砑訉傩院头椒ā?/p>
6 標(biāo)準(zhǔn)的JavaScript中,Ajax異步執(zhí)行調(diào)用基于下面哪一個(gè)機(jī)制才能實(shí)現(xiàn)
(1)Event和callback
(2)多線程操作
(3)Deferral和promise
7 文本框事件的屬性
click是點(diǎn)擊時(shí)觸發(fā)的方法;
change是改變文本框的內(nèi)容時(shí)觸發(fā)的方法
select是選中時(shí)觸發(fā)的方法
bind是被選元素(class或id)添加一個(gè)或多個(gè)事件處理程序,并規(guī)定事件發(fā)生時(shí)運(yùn)行的函數(shù)。
8 變量
javascript 一般使用var key = val;的形式復(fù)制,聲明變量的時(shí)候也要用var key; 如果不用var關(guān)鍵字,聲明的就是全局變量,一般不要這么做;
變量重復(fù)聲明也不會(huì)錯(cuò),js里有聲明提前,如果兩次聲明都有賦值,如:var a=10; var a=100; 則變量a的值是100; 若var a=10; var a; 則變量a的值是10;第二次的var a;沒什么用。
9 可以用作javascript異步模式的編程
回調(diào)函數(shù)、事件監(jiān)聽、發(fā)布/訂閱、Promises對(duì)象
10 instanceof 運(yùn)算符簡(jiǎn)介
instanceof 運(yùn)算符與 typeof 運(yùn)算符相似,用于識(shí)別正在處理的對(duì)象的類型。與 typeof 方法不同的是,instanceof 方法要求開發(fā)者明確地確認(rèn)對(duì)象為某特定類型。
通常來講,使用 instanceof 就是判斷一個(gè)實(shí)例是否屬于某種類型。
// 判斷 foo 是否是 Foo 類的實(shí)例
function Foo(){}
var foo = new Foo();
console.log(foo instanceof Foo) //true
另外,更重的一點(diǎn)是 instanceof 可以在繼承關(guān)系中用來判斷一個(gè)實(shí)例是否屬于它的父類型
// 判斷 foo 是否是 Foo 類的實(shí)例 , 并且是否是其父類型的實(shí)例
function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript 原型繼承
var foo = new Foo();
console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
11 number 類
console.log(Number(""));//0
console.log(Number(null));//0
console.log(Number(undefined));//NaN
console.log(parseInt(""));//NaN
console.log(parseInt(null));//NaN
console.log(parseInt(undefined));//NaN
console.log(null== 0);//false
console.log(undefined == 0);//false
12 數(shù)組的返回類型
push返回?cái)?shù)組的新的長度
reverse、sort返回?cái)?shù)組本身
concat返回被連接數(shù)組的一個(gè)副本
13 Angular 提供了3種方法來創(chuàng)建并注冊(cè)我們自己的 service。
Factory Service Provider
14 瀏覽器中使用js跨域獲取數(shù)據(jù)的描述
1.CORS
CORS(Corss-Origin Resource Sharing,跨資源共享),基本思想是使用自定義的HTTP頭部讓瀏覽器與服務(wù)器進(jìn)行溝通,從而決定請(qǐng)求或響應(yīng)的成功或失敗。即給請(qǐng)求附加一個(gè)額外的Origin頭部,其中包含請(qǐng)求頁面的源信息(協(xié)議、域名和端口),以便服務(wù)器根據(jù)這個(gè)頭部決定是否給予響應(yīng)。
2.document.domain
將頁面的document.domain設(shè)置為相同的值,頁面間可以互相訪問對(duì)方的JavaScript對(duì)象。
注意:
不能將值設(shè)置為URL中不包含的域;
松散的域名不能再設(shè)置為緊繃的域名。
3.圖像Ping
var img=new Image();
img.onload=img.onerror=function(){
... ...
}
img.src="url?name=value";
請(qǐng)求數(shù)據(jù)通過查詢字符串的形式發(fā)送,響應(yīng)可以是任意內(nèi)容,通常是像素圖或204響應(yīng)。
圖像Ping最常用于跟蹤用戶點(diǎn)擊頁面或動(dòng)態(tài)廣告曝光次數(shù)。
缺點(diǎn):
只能發(fā)送GET請(qǐng)求;
無法訪問服務(wù)器的響應(yīng)文本,只能用于瀏覽器與服務(wù)器間的單向通信。
4. Jsonp
var script=document.createElement("script");
script.src="url?callback=handleResponse";
document.body.insertBefore(script,document.body.firstChild);
JSONP由兩部分組成:回調(diào)函數(shù)和數(shù)據(jù)
回調(diào)函數(shù)是接收到響應(yīng)時(shí)應(yīng)該在頁面中調(diào)用的函數(shù),其名字一般在請(qǐng)求中指定。
數(shù)據(jù)是傳入回調(diào)函數(shù)中的JSON數(shù)據(jù)。
優(yōu)點(diǎn):
能夠直接訪問響應(yīng)文本,可用于瀏覽器與服務(wù)器間的雙向通信。
缺點(diǎn):
JSONP從其他域中加載代碼執(zhí)行,其他域可能不安全;
難以確定JSONP請(qǐng)求是否失敗。
5.Comet
Comet可實(shí)現(xiàn)服務(wù)器向?yàn)g覽器推送數(shù)據(jù)。
Comet是實(shí)現(xiàn)方式:長輪詢和流
短輪詢即瀏覽器定時(shí)向服務(wù)器發(fā)送請(qǐng)求,看有沒有數(shù)據(jù)更新。
長輪詢即瀏覽器向服務(wù)器發(fā)送一個(gè)請(qǐng)求,然后服務(wù)器一直保持連接打開,直到有數(shù)據(jù)可發(fā)送。發(fā)送完數(shù)據(jù)后,瀏覽器關(guān)閉連接,隨即又向服務(wù)器發(fā)起一個(gè)新請(qǐng)求。其優(yōu)點(diǎn)是所有瀏覽器都支持,使用XHR對(duì)象和setTimeout()即可實(shí)現(xiàn)。
流即瀏覽器向服務(wù)器發(fā)送一個(gè)請(qǐng)求,而服務(wù)器保持連接打開,然后周期性地向?yàn)g覽器發(fā)送數(shù)據(jù),頁面的整個(gè)生命周期內(nèi)只使用一個(gè)HTTP連接。
6.WebSocket
WebSocket可在一個(gè)單獨(dú)的持久連接上提供全雙工、雙向通信。
WebSocket使用自定義協(xié)議,未加密的連接時(shí)ws://;加密的鏈接是wss://。
var webSocket=new WebSocket("ws://");
webSocket.send(message);
webSocket.onmessage=function(event){
var data=event.data;
... ....
}
注意:
必須給WebSocket構(gòu)造函數(shù)傳入絕對(duì)URL;
WebSocket可以打開任何站點(diǎn)的連接,是否會(huì)與某個(gè)域中的頁面通信,完全取決于服務(wù)器;
WebSocket只能發(fā)送純文本數(shù)據(jù),對(duì)于復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在發(fā)送之前必須進(jìn)行序列化JSON.stringify(message))。
優(yōu)點(diǎn):
在客戶端和服務(wù)器之間發(fā)送非常少的數(shù)據(jù),減少字節(jié)開銷。
15 AngularJS1中頁面中用于數(shù)據(jù)綁定的占位符是{{ }}
16 JavaScript 中包含以下全局函數(shù)

17 Angular關(guān)于服務(wù)的說法
Angular大大減少了對(duì)DOM的訪問。
jQuery極大的豐富了DOM操作
依賴注入(Dependency Injection),是這樣一個(gè)過程:由于某客戶類只依賴于服務(wù)類的一個(gè)接口,而不依賴于具體服務(wù)類,所以客戶類只定義一個(gè)注入點(diǎn)。在程序運(yùn)行過程中,客戶類不直接實(shí)例化具體服務(wù)類實(shí)例,而是客戶類的運(yùn)行上下文環(huán)境或?qū)iT組件負(fù)責(zé)實(shí)例化服務(wù)類,然后將其注入到客戶類中,保證客戶類的正常運(yùn)行。
angular 指令的link函數(shù)中進(jìn)行dom操作和事件綁定,服務(wù)主要是封裝與后臺(tái)交互的數(shù)據(jù)接口提供復(fù)用性。
18 下列不屬于javascript內(nèi)置對(duì)象的是
Arguments 函數(shù)參數(shù)集合、Array 數(shù)組、Boolean 布爾對(duì)象、Date 日期時(shí)間、Error 異常對(duì)象、Function 函數(shù)構(gòu)造器、Math 數(shù)學(xué)對(duì)象、Number 數(shù)值對(duì)象、Object 基礎(chǔ)對(duì)象、RegExp 正則表達(dá)式對(duì)象、String 字符串對(duì)象
19 說一說常見的請(qǐng)求頭和相應(yīng)頭都有什么呢?
1)請(qǐng)求(客戶端->服務(wù)端[request])
GET(請(qǐng)求的方式) /newcoder/hello.html(請(qǐng)求的目標(biāo)資源) HTTP/1.1(請(qǐng)求采用的協(xié)議和版本號(hào))
Accept: */*(客戶端能接收的資源類型)
Accept-Language: en-us(客戶端接收的語言類型)
Connection: Keep-Alive(維護(hù)客戶端和服務(wù)端的連接關(guān)系)
Host: localhost:8080(連接的目標(biāo)主機(jī)和端口號(hào))
Referer: http://localhost/links.asp(告訴服務(wù)器我來自于哪里)
User-Agent: Mozilla/4.0(客戶端版本號(hào)的名字)
Accept-Encoding: gzip, deflate(客戶端能接收的壓縮數(shù)據(jù)的類型)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(緩存時(shí)間)
Cookie(客戶端暫存服務(wù)端的信息)
Date: Tue, 11 Jul 2000 18:23:51 GMT(客戶端請(qǐng)求服務(wù)端的時(shí)間)
2)響應(yīng)(服務(wù)端->客戶端[response])
HTTP/1.1(響應(yīng)采用的協(xié)議和版本號(hào)) 200(狀態(tài)碼) OK(描述信息)
Location: http://www.baidu.com(服務(wù)端需要客戶端訪問的頁面路徑)
Server:apache tomcat(服務(wù)端的Web服務(wù)端名)
Content-Encoding: gzip(服務(wù)端能夠發(fā)送壓縮編碼類型)
Content-Length: 80(服務(wù)端發(fā)送的壓縮數(shù)據(jù)的長度)
Content-Language: zh-cn(服務(wù)端發(fā)送的語言類型)
Content-Type: text/html; charset=GB2312(服務(wù)端發(fā)送的類型及采用的編碼方式)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服務(wù)端對(duì)該資源最后修改的時(shí)間)
Refresh: 1;url=http://www.it315.org(服務(wù)端要求客戶端1秒鐘后,刷新,然后訪問指定的頁面路徑)
Content-Disposition: attachment; filename=aaa.zip(服務(wù)端要求客戶端以下載文件的方式打開該文件)
Transfer-Encoding: chunked(分塊傳遞數(shù)據(jù)到客戶端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服務(wù)端發(fā)送到客戶端的暫存數(shù)據(jù))
Expires: -1//3種(服務(wù)端禁止客戶端緩存頁面數(shù)據(jù))
Cache-Control: no-cache(服務(wù)端禁止客戶端緩存頁面數(shù)據(jù))
Pragma: no-cache(服務(wù)端禁止客戶端緩存頁面數(shù)據(jù))
Connection: close(1.0)/(1.1)Keep-Alive(維護(hù)客戶端和服務(wù)端的連接關(guān)系)
Date: Tue, 11 Jul 2000 18:23:51 GMT(服務(wù)端響應(yīng)客戶端的時(shí)間)
在服務(wù)器響應(yīng)客戶端的時(shí)候,帶上Access-Control-Allow-Origin頭信息,解決跨域的一種方法。
20 hasOwnProperty和isPrototypeOf的作用
hasOwnProperty:是用來判斷一個(gè)對(duì)象是否有你給出名稱的屬性或?qū)ο?。不過需要注意的是,此方法無法檢查該對(duì)象的原型鏈中是否具有該屬性,該屬性必須是對(duì)象本身的一個(gè)成員。
isPrototypeOf :是用來判斷要檢查其原型鏈的對(duì)象是否存在于指定對(duì)象實(shí)例中,是則返回true,否則返回false。
21 JavaScript RegExp 對(duì)象有 3 個(gè)方法:test()、exec() 和 compile()。
(1) test() 方法用來檢測(cè)一個(gè)字符串是否匹配某個(gè)正則表達(dá)式,如果匹配成功,返回 true ,否則返回 false;
(2) exec() 方法用來檢索字符串中與正則表達(dá)式匹配的值。exec() 方法返回一個(gè)數(shù)組,其中存放匹配的結(jié)果。如果未找到匹配的值,則返回 null;
(3)compile() 方法可以在腳本執(zhí)行過程中編譯正則表達(dá)式,也可以改變已有表達(dá)式。
22 JS中操作數(shù)組方法的比較
pop()方法用于刪除數(shù)組的最后一個(gè)元素,并返回被刪除的最后一個(gè)元素,這樣的話數(shù)組就被改變了。
splice()方法可以對(duì)數(shù)組中已經(jīng)存在元素進(jìn)行刪除,也可以添加元素到數(shù)組中。
sort()方法對(duì)數(shù)組中所有的元素都進(jìn)行排序,如果沒有提供比較函數(shù)compareFunction,則按照字符串的Unicode碼的順序進(jìn)行排序。
所以以上三種方法都改變了數(shù)組。
而 concat()方法用于連接兩個(gè)或多個(gè)數(shù)組。該方法不會(huì)改變現(xiàn)有的數(shù)組,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本,返回一個(gè)新的數(shù)組。該數(shù)組是通過把所有的arrayX參數(shù)添加到arryaObject中生成的,如果要進(jìn)行 concat()操作的參數(shù)是數(shù)組,那么添加的是數(shù)組中的元素,而不是數(shù)組。
23 操作符知識(shí)點(diǎn)
《JavaScript權(quán)威指南》的部分相關(guān)知識(shí)點(diǎn)
“==”運(yùn)算符(兩個(gè)操作數(shù)的類型不相同時(shí))
如果一個(gè)值是null,另一個(gè)值是undefined,則它們相等
如果一個(gè)值是數(shù)字,另一個(gè)值是字符串,先將字符串轉(zhuǎn)換為數(shù)學(xué),然后使用轉(zhuǎn)換后的值進(jìn)行比較。
如果其中一個(gè)值是true,則將其轉(zhuǎn)換為1再進(jìn)行比較。如果其中的一個(gè)值是false,則將其轉(zhuǎn)換為0再進(jìn)行比較。
如果一個(gè)值是對(duì)象,另一個(gè)值是數(shù)字或字符串,則將對(duì)象轉(zhuǎn)換為原始值,再進(jìn)行比較。
對(duì)象到數(shù)字的轉(zhuǎn)換
如果對(duì)象具有valueOf()方法,后者返回一個(gè)原始值,則JavaScript將這個(gè)原始值轉(zhuǎn)換為數(shù)字(如果需要的話)并返回一個(gè)數(shù)字。
否則,如果對(duì)象具有toString()方法,后者返回一個(gè)原始值,則JavaScript將其轉(zhuǎn)換并返回。(對(duì)象的toString()方法返回一個(gè)字符串直接量(作者所說的原始值),JavaScript將這個(gè)字符串轉(zhuǎn)換為數(shù)字類型,并返回這個(gè)數(shù)字)。
否則,JavaScript拋出一個(gè)類型錯(cuò)誤異常。
空數(shù)組轉(zhuǎn)換為數(shù)字0
數(shù)組繼承了默認(rèn)的valueOf()方法,這個(gè)方法返回一個(gè)對(duì)象而不是一個(gè)原始值,因此,數(shù)組到數(shù)學(xué)的轉(zhuǎn)換則調(diào)用toString()方法??諗?shù)組轉(zhuǎn)換為空字符串,空字符串轉(zhuǎn)換為數(shù)字0.
24 History 對(duì)象屬性
length 返回歷史列表中的網(wǎng)址數(shù)
back() 加載 history 列表中的前一個(gè) URL
forward() 加載 history 列表中的下一個(gè) URL
go() 加載 history 列表中的某個(gè)具體頁面
25 給網(wǎng)頁添加javascript的方式有
(1) 使用script標(biāo)簽,將javascript代碼寫到<script></script>之間
(2)添加外部javascript文件
(3)使用行內(nèi)javascript
26 javascirpt中的數(shù)字在計(jì)算機(jī)內(nèi)存儲(chǔ)為多少Byte
1.Javascript中,由于其變量?jī)?nèi)容不同,變量被分為基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量?;绢愋妥兞坑?b>八字節(jié)內(nèi)存,存儲(chǔ)基本數(shù)據(jù)類型(數(shù)值、布爾值、null和未定義)的值,引用類型變量則只保存對(duì)對(duì)象、數(shù)組和函數(shù)等引用類型的值的引用(即內(nèi)存地址)。
2.JS中的數(shù)字是不分類型的,也就是沒有byte/int/float/double等的差異。
27 哪些函數(shù)能用來驗(yàn)證字符串的完整性
? ? ?md5()函數(shù)將一個(gè)字符串進(jìn)行md5加密計(jì)算,md5()函數(shù)使用RSA數(shù)據(jù)安全,包括MD5報(bào)文摘要算法。 語法:md5(string,raw),第一個(gè)參數(shù)string必需,表示待處理字符串,第二個(gè)參數(shù)raw可選,布爾型數(shù)值,默認(rèn)為false,false表示返回32位的十六進(jìn)制字符串,true表示返回16位二進(jìn)制數(shù)。 ? ? ? ??
? ? ? ?sha1()函數(shù)計(jì)算字符串sha-1散列,使用哈希安全算法。 語法:sha1(string,raw),同md5。 ?
? ? ? ?str_rot13()函數(shù)對(duì)字符串執(zhí)行rot13編碼。
? ? ? ?crc32()函數(shù)計(jì)算字符串的32位crc(循環(huán)冗余校驗(yàn)),該函數(shù)可以用于驗(yàn)證數(shù)據(jù)完整性。
28 數(shù)組
arr是個(gè)對(duì)象數(shù)組,reverse和sort只是改了arr的內(nèi)容,返回的依然是arr對(duì)象本身,而concat返回的是新的對(duì)象,這里考的點(diǎn)是淺拷貝和深度拷貝,concat和slice常用來做深度拷貝
29 下列函數(shù)的用法
hover(over ,out):模仿懸停事件,即當(dāng)鼠標(biāo)移動(dòng)到一個(gè)匹配的元素上面時(shí),會(huì)觸發(fā)指定的第一個(gè)函數(shù)。當(dāng)鼠標(biāo)移出這個(gè)元素時(shí),會(huì)觸發(fā)指定的第二個(gè)函數(shù)。
keypress(fn):在每一個(gè)匹配元素的keypress事件中綁定一個(gè)處理函數(shù)
change():調(diào)用執(zhí)行綁定到change事件的所有函數(shù),包括瀏覽器的默認(rèn)行為。
change(fn)是文本框的內(nèi)容發(fā)生變化時(shí)執(zhí)行的操作、給所有的文本框增加輸入驗(yàn)證
select(fn)是文本框的內(nèi)容被選擇時(shí)執(zhí)行的操作。
click():是點(diǎn)擊時(shí)觸發(fā)的方法;
bind():是被選元素(class或id)添加一個(gè)或多個(gè)綁定事件處理程序,并規(guī)定事件發(fā)生時(shí)運(yùn)行的函數(shù)。
30 數(shù)組方法
push返回?cái)?shù)組的新的長度
reverse、sort返回?cái)?shù)組本身
concat返回被連接數(shù)組的一個(gè)副本。
31 Angular 的知識(shí),沒有$send.
$emit只能向parent controller傳遞event與data
$broadcast只能向child controller傳遞event與data
$on用于接收event與data
32 需要匹配包含文本的元素
text()是jQuery中的方法,可是設(shè)置或返回被選元素的文本內(nèi)容
contains選擇器,選取包含指定字符串的元素,字符串也可以是文本
input()選擇器,選取表單元素
attr(name,value)屬性操作,設(shè)置或返回被選元素的屬性和屬性值
33 promise三種狀態(tài)
一個(gè)promise可能有三種狀態(tài):等待(pending)、已完成(fulfilled)、已拒絕(rejected)
一個(gè)promise的狀態(tài)只可能從“等待”轉(zhuǎn)到“完成”態(tài)或者“拒絕”態(tài),不能逆向轉(zhuǎn)換,同時(shí)“完成”態(tài)和“拒絕”態(tài)不能相互轉(zhuǎn)換
promise必須實(shí)現(xiàn)then方法(可以說,then就是promise的核心),而且then必須返回一個(gè)promise,同一個(gè)promise的then可以調(diào)用多次,并且回調(diào)的執(zhí)行順序跟它們被定義時(shí)的順序一致
then方法接受兩個(gè)參數(shù),第一個(gè)參數(shù)是成功時(shí)的回調(diào),在promise由“等待”態(tài)轉(zhuǎn)換到“完成”態(tài)時(shí)調(diào)用,另一個(gè)是失敗時(shí)的回調(diào),在promise由“等待”態(tài)轉(zhuǎn)換到“拒絕”態(tài)時(shí)調(diào)用。同時(shí),then可以接受另一個(gè)promise傳入,也接受一個(gè)“類then”的對(duì)象或方法,即thenable對(duì)象。
34 AngularJS1元素過濾
filter的兩種使用方法
1. 在模板中使用filter
我們可以直接在{{}}中使用filter,跟在表達(dá)式后面用 | 分割,語法如下:
{{ expression | filter }}
也可以多個(gè)filter連用,上一個(gè)filter的輸出將作為下一個(gè)filter的輸入
{{ expression | filter1 | filter2 | ... }}
filter可以接收參數(shù),參數(shù)用 : 進(jìn)行分割,如下:
{{ expression | filter:argument1:argument2:... }}
除了對(duì){{}}中的數(shù)據(jù)進(jìn)行格式化,我們還可以在指令中使用filter,例如先對(duì)數(shù)組array進(jìn)行過濾處理,然后再循環(huán)輸出:
2. 在controller和service中使用filter
我們的js代碼中也可以使用過濾器,方式就是我們熟悉的依賴注入,例如我要在controller中使用currency過濾器,只需將它注入到該controller中即可,代碼如下:
app.controller('testC',function($scope,currencyFilter){
$scope.num = currencyFilter(123534);
}
在模板中使用{{num}}就可以直接輸出 $123,534.00了!在服務(wù)中使用filter也是同樣的道理。
ng提供了一個(gè)$filter服務(wù)可以來調(diào)用所需的filter,你只需注入一個(gè)$filter就夠了,使用方法如下:
app.controller('testC',function($scope,$filter){
$scope.num = $filter('currency')(123534);
$scope.date = $filter('date')(new Date());
}
可以達(dá)到同樣的效果。好處是你可以方便使用不同的filter了。
阻止事件的默認(rèn)操作,用stopPropagation;而阻止瀏覽器的默認(rèn)操作時(shí)preventDefault。