2013-05-10 26 views
6
<div class="Trade"> 
    <div id="Offer"> 
     <div class="NoResults">No Result!</div> 
     <div class="FooterPager"> <span id="Offer"><a disabled="disabled">First</a>&nbsp;<a disabled="disabled">Previous</a>&nbsp;<a disabled="disabled">Next</a>&nbsp;<a disabled="disabled">Last</a>&nbsp;</span> 
     </div> 
    </div> 
</div> 

Oto mój javascript:JavaScript: Sprawdź, czy istnieje classname

function Check(){ 
return !(iframe.contentDocument.getElementById("Offer").firstElementChild.tagName.toLowerCase() == "table"); 
} 

Czy to możliwe, aby zwrócić wartość prawdziwą lub fałszywą, aby sprawdzić, czy klasa "NoResult" istnieje? Jeśli tak, jak to zrobić? Jesteście kamieniami. Nie mogę zmienić kodu HTML, tylko javascript.

Odpowiedz

1

w JavaScript bez korzystania z biblioteki takich jak jQuery, można to zrobić poprzez:

(' ' + MyElement.className + ' ').indexOf(' MyClassName ') != -1 

Ta wartość true, gdy pojawi się „MyClassName” nigdzie sama wewnątrz łańcucha, jak określono na posesji className.

W Twoim konkretnym przypadku, coś jak:

function Check() 
{ 
    //Returns true when it exists 
    return (' ' + iframe.contentDocument.getElementById('Offer').firstElementChild.className + ' ').indexOf(' NoResults ') != -1; 
} 

Było wcześniej błąd w mojej odpowiedzi, gdzie byłoby niewłaściwie zidentyfikować częściową mecz jak wskazano w komentarzach. Zasadniczo musisz wziąć pod uwagę, że nazwa klasy jest w całości. Dobrym sposobem na zrobienie tego (jak pokazują inne odpowiedzi) jest to, że jeśli spiszesz przed i po zarówno całej właściwości className, jak i klasie, której szukasz, zawsze znajdzie całą klasę.

ile to będzie działać, polecam Alex's answer jak podczas classListisn't available in every browser (< = IE9 i kilka innych), jest to rozwiązanie neater problemu.

18

Użyj classList.

var hasClass = element.classList.contains('some-class'); 

Further Reading (zrzeczenie się: link do mojego własnego postu).

Jeśli nie jest obsługiwana w swoich platformach docelowych, a następnie spróbuj ...

var hasClass = (" " + element.className + " ").indexOf(" some-class ") > -1; 
+0

+1 dla 'classList'a – Turnerj

+0

@Turnerj - Niestety, nawet IE9 tego nie obsługuje :( –

+2

Ahhh, masz rację, nie obsługuje tego. Dla każdego, kto chce znać wsparcie, [sprawdź to tutaj] (http://caniuse.com/#search=classList) – Turnerj

1
if (~(' ' + element.className + ' ').indexOf(' NoResult ')) { 
    // here you go. You've got that class... 
} 
-1

Można użyć .hasClass ('classname') funkcja jQuery i zwróci true, jeśli nazwa klasy istnieje