2017-11-23 3 views
1

Ich versuche, den Typ des Inhalts in einem Element mit Javascript/jquery zu testen, aber immer wenn ich den Inhalt aus dem Element abrufen, wird es immer als Zeichenfolge zurückgegeben :Gibt es eine Möglichkeit, den Inhaltstyp in einem Element zu testen

$('.test').each(function() { 
 
    console.log(
 
     this.innerHTML.trim(), 
 
     typeof this.innerHTML, 
 
     typeof $(this).text(), 
 
     $.type(this.innerHTML.trim()), 
 
     Number.isInteger(Number(this.innerHTML.trim())) 
 
    ); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
1234 
 
</div> 
 
<div class="test"> 
 
22.54 
 
</div> 
 
<div class="test"> 
 
2test 
 
</div>

gibt es eine Möglichkeit, die Art zu testen, ohne typeof, so dass ich die Zahlen analysieren kann, damit ich richtig eine Art auf sie tun können, anstatt sie als Strings

Sortierung
+1

Sie müssen 'Number.isInteger (Nummer (this.innerHTML.trim()))'. – Xufox

+0

Prüfen Sie nur den Integer-Typ oder auch andere Arten von Werten? – Lalit

+0

@Lalit Ich muss für Float, Integer und String überprüfen und entsprechend analysieren, damit die Sortierung ordnungsgemäß funktioniert – Pete

Antwort

1

Dies ist Check func für typeof:

$('.test').each(function() { 
 
    
 
    var checktype = isNaN(this.innerHTML) 
 
    if (checktype == false) { alert("number"); return;} 
 
    else { 
 
    
 
    alert(typeof this.innerHTML) 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
1234c 
 
</div> 
 
<div class="test"> 
 
22.54 
 
</div>

+0

zurückgegeben Hahaha 'isNaN' das ist, was ich gesucht habe, Danke :) – Pete

+0

Sie haben Recht, keine Notwendigkeit für Eval. Irgendwann kann eval nette Arbeit machen ... –

-1

Verwenden Sie parseInt vor dem Überprüfen isInteger.

$('.test').each(function() { 
 
    console.log(Number.isInteger(parseInt(this.innerHTML.trim()))) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
1234 
 
</div> 
 
<div class="test"> 
 
22.54 
 
</div>

+0

Du meinst 'parseFloat' oder' Number'. – Xufox

+1

Leider, wenn Sie parse int und number.isnteger verwenden, würde es wahr für Dinge wie "2test" – Pete

1

können Sie zum Beispiel verwenden Sie die Funktion isNaN zu überprüfen, ob Text (auch Strings akzeptiert) ist keine Nummer. Wenn es die Nummer ist parseFloat oder + Zeichen, um Ihre Variable auf den gewünschten Typ zu analysieren.

$('.test').each(function() { 
 
    var text = $(this).text(); 
 
    if(!isNaN(text)) 
 
    \t text = +text; 
 
    console.log(text + " " + typeof text); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test"> 
 
1234 
 
</div> 
 
<div class="test"> 
 
22.54 
 
</div> 
 
<div class="test"> 
 
normalText 
 
</div>

Verwandte Themen