2016-04-02 18 views
2

Ich habe Probleme, dieses Stück Code von jQuery in reines JavaScript zu konvertieren.Einfaches jQuery in normales JavaScript umwandeln

Das Skript ist

if($('#item-1').find('#player').length == 1) 
{ 
    innerHTML = "You Won!!!"; 
} else { 
    innerHTML = "You Lose!!!"; 
} 

Muss ich getElementByld benutzen?

if(document.getElementById("#item-1 #player").length == 1) 

Antwort

0

Verwendung querySelector:

//evaluates to true if length > 0 
if(document.querySelectorAll('#item-1 #player').length) 
{ 
    innerHTML = "You Won!!!"; 
} else { 
    innerHTML = "You Lose!!!"; 
} 

oder in 1 Zeile Code:

var innerHtml = document.querySelectorAll('#item-1 #player').length ? 'You Won!!!' : 'You Lose!!!'; 
+1

'document.querySelector' wird einen einzelnen Knoten zurückgeben. 'document.querySelectorAll' gibt eine Sammlung von Knoten zurück. Ersteres hat keine 'length'-Eigenschaft. – zzzzBov

2

getElementById nimmt die ID des einzelnen Elements ohne #. Sie benötigen querySelector.

document.querySelector('#item-1 #player').length 

Auch als ID ist einzigartigen gibt es keine Notwendigkeit von Nachkommen Selektor ist. Die ID des Elements kann direkt verwendet werden.

document.getElementById('player') 

Code:

innerHtml = document.getElementById('player') ? 'You won!!!' : 'You lose!!!'; 

Komplexere:

innerHtml = 'You ' + (document.getElementById('player') ? 'won' : 'lose') + '!!!'; 
+0

"Da die ID eindeutig ist, ist kein Selektor für Nachkommen erforderlich." tatsächlich gegeben der Code ist es wahrscheinlich, dass ein Element zu unterschiedlichen Zeiten innerhalb der anderen sein kann (es ist sehr einfach, DOM-Knoten zu verschieben), was bedeuten würde, dass 'document.querySelector ('# item-1 #player')' wäre angemessen Überprüfen des Status, wo 'document.getElementById ('player')' nicht wäre. – zzzzBov

Verwandte Themen