Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
avascript中children和childNodes的區(qū)別
1 childNodes:它是標(biāo)準(zhǔn)屬性,它返回指定元素的子元素集合,包括HTML節(jié)點(diǎn),所有屬性,文本節(jié)點(diǎn)。
可以通過nodeType來判斷是哪種類型的節(jié)點(diǎn),只有當(dāng)nodeType==1時(shí)才是元素節(jié)點(diǎn),2是屬性節(jié)點(diǎn),3是文本節(jié)點(diǎn)。
有些人錯(cuò)誤的使用()去取該集合元素,下表列出各瀏覽器對(duì)childNodes(i)的支持情況:
IE6/7/8/Safari/Chrome/Opera IE9/Firefox
childNodes(i) 支持 不支持
有時(shí)候需要獲取指定元素的第一個(gè)HTML子節(jié)點(diǎn)(非屬性/文本節(jié)點(diǎn)),最容易想到的就是firstChild 屬性。
代碼中第一個(gè)HTML節(jié)點(diǎn)前如果有換行,空格,那么firstChild返回的就不是你想要的了。可以使用nodeType來判斷下。
function getFirst(elem){
for(var i=0,e;e=elem.childNodes[i++];){
if(e.nodeType==1)
return e;
}
}
2 children:非標(biāo)準(zhǔn)屬性,它返回指定元素的子元素集合。
但它只返回HTML節(jié)點(diǎn),甚至不返回文本節(jié)點(diǎn),雖然不是標(biāo)準(zhǔn)的DOM屬性,但它和innerHTML方法一樣,得到了幾乎所有瀏覽器的支持。
和childNodes 一樣,在Firefox下不支持()取集合元素。因此如果想獲取指定元素的第一個(gè)HTML節(jié)點(diǎn),可以使用children[0]來替代上面的getFirst函數(shù)。
這里需要注意的是children在IE中包含注釋節(jié)點(diǎn)。
區(qū)別: childNodes會(huì)返回文本節(jié)點(diǎn),children不會(huì)返回文本節(jié)點(diǎn)
以childNodes屬性為例:
IE6-IE8版本瀏覽器不會(huì)返回文本節(jié)點(diǎn),IE9以上版本瀏覽器會(huì)返回文本節(jié)點(diǎn)
W3C瀏覽器(包括火狐瀏覽器)會(huì)返回節(jié)點(diǎn)
實(shí)例1:
<html>
<head>
<meta charset="utf-8">
<title>無標(biāo)題文檔</title>
<script>
window.onload=function ()
{
var oUl=document.getElementById('ul1');
//IE6-8
//alert(oUl.childNodes.length);
for(var i=0;i<oUl.childNodes.length;i++)
{
//nodeType==3 -> 文本節(jié)點(diǎn)
//nodeType==1 -> 元素節(jié)點(diǎn)
//alert(oUl.childNodes[i].nodeType);
if(oUl.childNodes[i].nodeType==1)
{
oUl.childNodes[i].style.background='red';
}
}
};
</script>
</head>
<body>
<ul id="ul1">
<li></li>
<li></li>
</ul>
aaaa
bbbb
fafafsdfasd 文本節(jié)點(diǎn)
<span>qwerqwre 元素節(jié)點(diǎn)</span>
</body>
</html>
實(shí)例2:
子1:(文本內(nèi)容中的連續(xù)空格)
<p>這段文本中,輸入連續(xù)的空格 大概輸入了十個(gè)。</p>
顯示效果:“格”和“大” 之間的是個(gè)空格顯示出來只是一個(gè)空格。
這段文本中,輸入連續(xù)的空格 大概輸入了十個(gè)。
例子2:(代碼之間的連續(xù)空格)
<span>span是一個(gè)行內(nèi)標(biāo)簽</span> <span>和前面的span元素之間隔了很多個(gè)空格</span>
顯示效果:兩個(gè)span元素之間連續(xù)的空格,顯示出來即"簽"與“和”之間的空格,只有一個(gè)空格。
span是一個(gè)行內(nèi)標(biāo)簽 和前面的span元素之間隔了很多個(gè)空格
上面兩個(gè)例子證明:HTML代碼中連續(xù)的空格在顯示時(shí)會(huì)顯示為一個(gè)空格,其余的多余的空格會(huì)被移除或者說被忽略。
段落文本其實(shí)也是HTML代碼的一部分,只不過它在p標(biāo)簽內(nèi)部,而例子2的空格是在兩個(gè)span標(biāo)簽之間。
理解了空格,現(xiàn)在看看空行,同理
例子3:(文本內(nèi)容中的空行)
<p>這段文本中,輸入連續(xù)的空行
大概輸入了五行。</p>
顯示效果:如我們所見,文本代碼中的五行空行,顯示出來也只是一個(gè)空格。
這段文本中,輸入連續(xù)的空行 大概輸入了五行。
例子4:(元素之間/標(biāo)簽之間的空行),只要把例子2中的空格換成空行就可以了,顯示效果和例子2的一樣,多行空行都只會(huì)顯示為一個(gè)空格。
<span>span是一個(gè)行內(nèi)標(biāo)簽</span>
<span>和前面的span元素之間隔了很多空行</span>
span是一個(gè)行內(nèi)標(biāo)簽 和前面的span元素之間隔了很多空行
得證:HTML 代碼中的所有連續(xù)的空格或空行(換行)都會(huì)被顯示為一個(gè)空格。
既然如此,如果我們希望擴(kuò)大兩個(gè)字符之間的間距,讓代碼中的連續(xù)空格或空行顯示出來的結(jié)果也是連續(xù)的空格或空行,那該怎么辦?其實(shí)很簡(jiǎn)單。
方法一:我們可以用預(yù)格式化標(biāo)簽<pre>,無論是空格或空行都適用。
<pre>
這是
預(yù)格式文本。
它保留了 空格
和換行。
</pre>
顯示效果
這是
預(yù)格式文本。
它保留了 空格
和換行。
方法二:我們可以用空格實(shí)體符 代替空格,用換行標(biāo)簽<br/>代替空行。雖然這種方法可以得到我們想要的顯示效果,但是對(duì)搜索引擎不是最友好的方式,因?yàn)?和<br/>在HTML中都是沒有語義的。所以建議盡量少用。另外需要注意的是, 必須小寫,而且最后面的分號(hào)是不能省略的。
方法三:(適合空格)使用全角空格
全角空格被解釋為漢字,所以不會(huì)被被解釋為HTML分隔符,可以按照實(shí)際的空格數(shù)顯示。
問題:怎么使用全角輸入法?
以搜狗輸入法為例,我們通常使用的是半角輸入,其狀態(tài)欄中有個(gè)月亮的標(biāo)志,就說明正在使用的是半角輸入,如果是太陽的標(biāo)志,就說明使用的是全角輸入。全角/半角的切換可以通過點(diǎn)擊標(biāo)志,也可以通過快捷鍵 Shift+Space(空格符)切換。
半角輸入(月亮)
全角輸入(太陽)
方法四:使用CSS樣式中字間隔屬性控制,CSS中的word-spacing 屬性可以改變字(單詞)之間的標(biāo)準(zhǔn)間隔。我們知道英文中兩個(gè)單詞之間是通過空格隔開的,所以我們視覺上可以這樣認(rèn)為,word-spacing改變了(拉長(zhǎng)或縮短)單詞之間那個(gè)空格的寬度。
方法五:使用CSS樣式中的white-space 屬性,這個(gè)屬性聲明如何處理元素內(nèi)的空白符。
值 | 描述 |
normal | 默認(rèn)。空白會(huì)被瀏覽器忽略。 |
pre | 空白會(huì)被瀏覽器保留。其行為方式類似 HTML 中的 <pre> 標(biāo)簽。 |
nowrap | 文本不會(huì)換行,文本會(huì)在在同一行上繼續(xù),直到遇到 <br> 標(biāo)簽為止。 |
pre-wrap | 保留空白符序列,但是正常地進(jìn)行換行。 |
pre-line | 合并空白符序列,但是保留換行符。 |
white-space:normal;就是正常,和不設(shè)置一樣,連續(xù)空格和空行都只會(huì)顯示一個(gè)空格。
white-space:nowrap;不換行是什么意思呢?正常情況下,當(dāng)我們的文本超出了文本域,文本就會(huì)自動(dòng)折行,這個(gè)設(shè)置就是說不自動(dòng)折行了,而是碰到換行標(biāo)簽<br />才換
white-space:pre;和方法一相同,將文本原樣輸出顯示。當(dāng)文本超出文本域時(shí),不換行,會(huì)產(chǎn)生滾動(dòng)條。
white-space:pre-wrap;保留空格和空行,但當(dāng)文本超出文本域時(shí),會(huì)自動(dòng)換行。
white-space:pre-line;連續(xù)的空格會(huì)顯示為一個(gè)空格,但保留連續(xù)的空行。
u202f 和 \xa0 是 Unicode 字符,分別表示特定類型的空格字符。
text="1\u202f000\u202f000"
print(text)
text="Hello\xa0World"
print(text)
這兩個(gè)字符都在排版中有特殊的用途,通過統(tǒng)一替換為普通空格,可以使文本更適合進(jìn)一步的處理和分析。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。