2015-04-26 14 views
9
<a href="javascript:void(0)" class="PrmryBtnMed" 
id = "VERYLONGTEXT" 

onclick="$(this).parents('form').submit(); return false;"><span>Dispatch to this address</span></a> 

UżywamJak używać nazwy document.querySelector do wybrania tej klasy z spacji?

var inPage = document.documentElement.innerHTML.indexOf('text to search') > 0, 
    el = document.querySelector(".PrmryBtnMed"); 

if (inPage && el) el.click(); 

Ale teraz, nazwa klasy uległa zmianie: istnieje przestrzeń i jakiś nowy tekst w nazwie klasy:

<a href="javascript:void(0)" class="PrmryBtnMed ApricotWheat" 
id = "VERYLONGTEXT" 
onclick="ApricotWheat(this); return false;"><span>Dispatch to this address</span></a> 

Jak mogę zmienić el = document.querySelector(".PrmryBtnMed"); znaleźć odpowiednią klasę?

Próbowałem użyć el = document.querySelector(".PrmryBtnMed.ApricotWheat");, ale to nie zadziałało.

Następnie próbowałem dodać spację (i uciec za pomocą odwrotnego ukośnika): el = document.querySelector(".PrmryBtnMed\ ApricotWheat");, ale to też nie działa.

Więc, zastanawiałem się, czy mogę użyć %20 dla miejsca .. ale bez powodzenia.

Byłbym bardzo wdzięczny za pomoc! Co ja robię źle?

+0

Nie może być żadnych spacji w nazwie klasy ... istnieją dwie różne klasy w elemencie ... użyj ".PrmryBtnMed.ApricotWheat" – rafaelcastrocouto

+0

'document.querySelector (". PrmryBtnMed.ApricotWheat ")' powinno działać. [** jsFiddle demo **] (http://jsfiddle.net/TexasBrawler/gyk26nbb/).Ale nie możesz mieć spacji w nazwie klasy; w rzeczywistości są to dwie klasy ('PrmryBtnMed' to jedna, a' ApricotWheat' to kolejna). –

+0

Zapomniałem dodać, że jest jeszcze jedna subtelna zmiana, którą teraz edytowałem, aby uwzględnić: 'onclick =" ApricotWheat (this); return false; ">' (Zamiast 'onclick =" $ (this) .parents ("formularz"). submit(); return false; ">') – Ted

Odpowiedz

12

Klasy nie może mieć miejsca, co masz jest element z dwoma oddzielne klasy na tym. Aby wybrać element z dwóch klas, należy użyć selektora klasy związków:

document.querySelector(".PrmryBtnMed.ApricotWheat"); 

To wybiera pierwszy element w dokumencie, który ma zarówno klasa PrmryBtnMed i klasy ApricotWheat. Zauważ, że nie ma znaczenia kolejność, w jakiej klasy te występują w atrybucie class i nie ma znaczenia, czy istnieją również inne klasy. To pasuje do żadnej z nich, na przykład:

<div class="PrmryBtnMed ApricotWheat">...</div> 

lub

<div class="ApricotWheat PrmryBtnMed">...</div> 

lub

<div class="PrmryBtnMed foo baz ApricotWheat">...</div> 

itp

Należy również pamiętać, że cytaty używasz wokół HTML atrybuty są sporadycznie nieprawidłowe; cytaty dotyczące atrybutów musi być normalne, nudne, pojedyncze (') lub podwójne ("), nie mogą być fantazyjnymi ofertami.

żywo przykładem cytatami trwałych i za pomocą przełącznika powyżej:

var el = document.querySelector(".PrmryBtnMed.ApricotWheat"); 
 
if (el) { 
 
    el.click(); 
 
} 
 

 
function ApricotWheat(element) { 
 
    alert(element.innerHTML); 
 
}
<a href="javascript:void(0)" class="PrmryBtnMed ApricotWheat" id="VERYLONGTEXT" onclick="ApricotWheat(this); return false;"><span>Dispatch to this address</span></a>

+0

Dobre miejsce z fantazyjnymi cytatami, nie jestem pewien jak to się stało! Masz całkowitą rację, absolutnie powinny to być '' 'lub' ''! – Ted

+0

Dzięki za twój przykład, ale co stało się z tym bitem z pierwszej linii: '' tekst do wyszukiwania'? (Używam tego do testowania obecność jakiegoś tekstu na stronie - jeśli jest tam, to chcę, aby przycisk został kliknięty) – Ted

+0

@Ted: To było nieistotne dla przykładu –

3

Nie może być żadnych spacji w nazwie klasy ... istnieją dwie różne klasy w elemencie ... używają ".PrmryBtnMed.ApricotWheat"

+0

Dzięki! Ale nadal nie działa, więc musi być tak, ponieważ 'if (inPage && el) el.click();' nie wykonuje już pożądanej akcji. Zastanawiam się, czy to ma coś wspólnego z 'onclick =" ApricotWheat (this); return false; ">'? – Ted

+0

urw ... ale plz używają detektorów zdarzeń zamiast atrybutu onclick https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener – rafaelcastrocouto

Powiązane problemy