2016-12-21 36 views
0

我需要一種方法來選擇只有第二個類的元素有2個類,以便我可以通過一個URL傳遞它以後使用。我創建了一個可以同時獲得這兩個類的函數,但我只需要class2。他們是一種剝離第一課的方式,只剩下第二課。或者是他們選擇第二堂課的方法。你怎樣才能選擇一個元素在JavaScript中的第二個類?

我沒有發現任何有關此問題使用香草JavaScript的問題。

<div class="class1 class2></div> 
<script> 

function get2ndClass(element) { 

    var secondClass = element.class; 
    return secondClass; 

} 
+4

儘管5個回答至少一個下面應該告訴你如何做到這一點,我認爲這是一個壞主意。通常,HTML元素中類的*順序*沒有意義。如果你想使用一個類作爲一個有意義的參數,你應該使用'data-'屬性。 (即,你在URL中使用它) – user3297291

+0

1)類的順序不能保證。所以,即使你的HTML表示「class =」class1 class2 class3「」,element.classList也可能以不同的順序返回它們。 2)'class'不用於存儲數據。 – mhutter

回答

-1

採用分體式

console.log("class1 class2".split(" ").pop());

+2

如果元素多於2個類,這將不起作用。 – Matt

+0

@matt'選擇只有第二個類的元素有2個類'閱讀問題之前downvote – Mahi

+1

@Mahi,無論您的要求是什麼,*從不*寫入2.總是寫0,1或N. –

2

使用classList陣列屬性首先是檢查是否至少有2班,然後在數組中返回第二個項目。

function get2ndClass(element) { 
    return (element && element.classList.length>1) ? element.classList[1] : null; 
} 

如果你支持不支持classList舊的瀏覽器,那麼你就需要一個額外的行:

function get2ndClass(element) { 
    var classList = (element) ? element.className.split(" ") : null; 
    return (classList && element.classList.length>1) ? element.classList[1] : null; 
} 
+0

'classList.item(index)'返回未定義的,如果沒有元素而不是'null' – Andreas

-1

使用classList

function get2ndClass(element) { 
 
    return element.classList[1] || false; 
 
} 
 

 
var $div = document.querySelector('div') 
 
var secondClass = get2ndClass($div); 
 

 
console.log(secondClass);
<div class="firstClass secondClass"></div>

0

您可以使用classList獲得分配給元素

return element.classList.length > 1 ? element.classList[1] : ""; 
0

類無需classList支持,只是拆分元素class屬性:

function get2ndClass(elt) { 
 
    return elt.getAttribute('class').split(' ')[1] || null; 
 
} 
 
console.log(get2ndClass(document.getElementsByTagName('div')[0]))
<div class="class1 class2" >

相關問題