2012-09-18 64 views
0

讓我們的估計,我們已安排如下元素:通過類名稱獲取上一頁/上述元素(一個或多個)

<div><input class="elementToGet" value="1"></div>   // st elementToGet 
<div><span class"button">get prev elementToGet</span></div> // Nr1 
<div><span class"button">get prev elementToGet</span></div> // Nr2 
<div><span class"button">get prev elementToGet</span></div> // Nr3 
<div><input class="elementToGet" value="2"></div>   // nd elementToGet 
<div><span class"button">get prev elementToGet</span></div> // Nr4 
<div><span class"button">get prev elementToGet</span></div> // Nr5 
<div><span class"button">get prev elementToGet</span></div> // Nr6 

我怎樣才能得到每個跨度以前elementToGet

例如,從4開始編號的元素將得到第二個elementToGet

Javascript沒有框架需要。

function getPrev(className) { 
    var items = [], myPosts = document.getElementsByClassName(className); 

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

     // I have no ideas what to do next 

     items.push(myPosts[i]); 
    } 
    return items[0]; 
} 
+0

你讀過任何JavaScript文件或作出任何企圖? – thatidiotguy

回答

2

爲了得到你想要的東西,你可以用parentNode得到span圍繞div。然後,您可以使用previousSibling遍歷DOM並使用 childNodes firstChild來查找所需的輸入。

我砍死在一起,這很快:

var span = document.getElementsByClassName('button')[4], // one of the "button" spans 
    div = span.parentNode, // get the span's parent div 
    ele, // variable to hold the element we are looking for 
    temp; // temp var for the loop 

while ((div = div.previousSibling) !== null) { // Loop through all the previous divs 
    temp = div.firstChild; // get the div's children 
    if (temp && temp.className === 'elementToGet') { // does it's 1st child have the class? 
     ele = temp; // we found it! 
     break; 
    } 
} 
alert(ele.value);​ 

DEMO:http://jsfiddle.net/zH4SU/1/

+0

謝謝你的迴應。我試圖以一種更難和無意義的方式實現它。 – Hypn0tizeR

+0

@ Hypn0tizeR:很高興我能幫助:-) –

+0

實際上是從他的描述好像.closest()會工作,但不會允許的框架 – ScottC

1

如果您正在使用JQuery,你可以使用.closest(),它遍歷了DOM樹

+1

這是一種需要的方法,但僅靠這一點將無法獲得OP正在尋找的元素。 –

相關問題