javascript擷取dom的下一個節點方法,javascriptdom
利用javascript 寫一個在頁面點擊加減按鈕實現數位累加。
簡略的html大概如此。看得懂就好不要在意這些細節啊
<input type="button" value="+" onclick="jia(this)" /><label class="num">0</label><input type="button" value="-" onclick="jian(this)" />
樣子是這樣的
javascript 代碼如下
<script type="text/javascript">function jia(a){var nextnode = a.nextElementSibling;//擷取下一個節點alert(nextnode.innerHTML);var a = parseInt(nextnode.innerHTML)a += 1;nextnode.innerHTML = a;}function jian(a) {var previousnode = a.previousElementSibling;var a = parseInt(previousnode.innerHTML)a -= 1;a = a > 0 ? a : 0;previousnode.innerHTML = a;}</script>
解釋一下:
function jian(a)和
function jia(a)就是當前點擊的對象了。在onclick事件接的方法裡加了this;
- nextElementSibling 擷取當前節點的下一個節點(獲得下一個兄弟節點)
- previousElementSibling 擷取當前節點的上一個節點
注意: IE將跳過在節點之間產生的空格文檔節點(如:換行字元),而Mozilla不會這樣——FF會把諸如空格換行之類的排版元素視作節點讀取,因此,在ie 中用nextSibling便可讀取到的下一個節點元素,在FF中就需要這樣寫:nextElementSibling了。
上面的解釋的意思的使用 nextElementSibling 和previousElementSibling 獲得下一個兄弟節點和上一個兄弟節點,可以去掉換行,空格上面之類的,直接找到我們標籤元素。但是下面的兩個
nextSibling
previousSibling 也是得下一個兄弟節點和上一個兄弟節點的,只是在IE中好用
--------------------關鍵字解釋
parseInt 轉化功能。
a = a > 0 ? a : 0;----三元運算式。
javascript html dom 中擷取某節點下的所有某元素的數組
你的代碼是什嗎?
document.getElementsByTagName("a");
還是parentObj.getElementsByTagName("a");
前一個是整個頁面的a
後一個才是父物件裡面所有的a
把代碼貼出來看看吧
DOM訪問元素節點有幾種方法?分別是什?
1. 通過頂層document節點擷取:
(1) document.getElementById(elementId) :該方法通過節點的ID,可以準確獲得需要的元素,是比較簡單快捷的方法。如果頁面上含有多個相同id的節點,那麼只返回第一個節點。
如今,已經出現了如prototype、Mootools等多個JavaScript庫,它們提供了更簡便的方法:$(id),參數仍然是節點的id。這個方法可以看作是document.getElementById()的另外一種寫法,不過$()的功能更為強大,具體用法可以參考它們各自的API文檔。
(2)document.getElementsByName(elementName) :該方法是通過節點的name擷取節點,從名字可以看出,這個方法返回的不是一個節點元素,而是具有同樣名稱的節點數組。然後,我們可以通過要擷取節點的某個屬性來迴圈判斷是否為需要的節點。
例如:在HTML中checkbox和radio都是通過相同的name屬性值,來標識一個組內的元素。如果我們現在要擷取被選中的元素,首先擷取改組元素,然後迴圈判斷是節點的checked屬性值是否為true即可。
(3)document.getElementsByTagName(tagName) :該方法是通過節點的Tag擷取節點,同樣該方法也是返回一個數組,例如:document.getElementsByTagName('A')將會返回頁面上所有超連結節點。在擷取節點之前,一般都是知道節點的類型的,所以使用該方法比較簡單。但是缺點也是顯而易見,那就是返回的數組可能十分龐大,這樣就會浪費很多時間。那麼,這個方法是不是就沒有用處了呢?當然不是,這個方法和上面的兩個不同,它不是document節點的專有方法,還可以應用其他的節點,下面將會提到。
2、通過父節點擷取:
(1)parentObj.firstChild :如果節點為已知節點(parentObj)的第一個子節點就可以使用這個方法。這個屬性是可以遞迴使用的,也就是支援parentObj.firstChild.firstChild.firstChild...的形式,如此就可以獲得更深層次的節點。
(2)parentObj.lastChild :很顯然,這個屬性是擷取已知節點(parentObj)的最後一個子節點。與firstChild一樣,它也可以遞迴使用。
在使用中,如果我們把二者結合起來,那麼將會達到更加令人興奮的效果,即:parentObj.firstChild.lastChild.lastChild...
(3)parentObj.childNodes :擷取已知節點的子節點數組,然後可以通過迴圈或者索引找到需要的節點。
注意 :經測試發現,在IE7上擷取的是直接子節點的數組,而在Firefox2.0.0.11上擷取的是所有子節點即包括子節點的子節點。
(4)parentObj.children :擷取已知節點的直接子節點數組。
注意 :經測試,在IE7上,和childNodes效果一樣,而Firefox2.0.0.11不支援。這也是為什麼我要使用和其他方法不同樣式的原因。因此不建議使用。
(5)parentObj.getElementsByTagName(tagName) :使用方法不再贅述,它返回已知節點的所有子節點中類型為指定值的子節點數組。例如:parentObj.getElementsByTagName('A')返回已知的子節點中的所有超連結。......餘下全文>>