Das funktioniert anscheinend nicht:
X = $td.text();
if (X == ' ') {
X = '';
}
Gibt es etwas an einem nicht unterbrechenden Leerzeichen oder dem kaufmännischen Und, das JavaScript nicht mag?
javascript
jquery
Phillip Senn
quelle
quelle
.text()
das Markup entfernt wird, daher glaube ich nicht, dass Sie
ein Ergebnis ohne Markup finden werden.Antworten:
ist eine HTML-Entität. Dabei.text()
werden alle HTML-Entitäten auf ihre Zeichenwerte dekodiert.Anstatt mit der Entität zu vergleichen, vergleichen Sie mit dem tatsächlichen Rohzeichen:
Sie können das Zeichen auch manuell aus dem Zeichencode in seiner mit Javascript maskierten Form erstellen:
Weitere Informationen zu finden Sie
String.fromCharCode
hier:Weitere Informationen zu Zeichencodes für verschiedene Zeichensätze finden Sie hier:
quelle
Denken Sie daran, dass
.text()
das Markup entfernt wird, daher glaube ich nicht, dass Sie
ein Ergebnis ohne Markup finden werden.Zu einer Antwort gemacht ....
Zeigt eine Warnung an, da stattdessen das ASCII-Äquivalent des Markups zurückgegeben wird.
quelle
$("<div> </div>").text().charCodeAt()
gibt160
(Unicode für nbsp)Diese Entität wird in das Zeichen konvertiert, das sie darstellt, wenn der Browser die Seite rendert. JS (jQuery) liest die gerenderte Seite und trifft daher nicht auf eine solche Textsequenz. Die einzige Möglichkeit, auf so etwas zu stoßen, besteht darin, Entitäten doppelt zu codieren.
quelle
Die jQuery-Dokumente für
text()
sagtIch würde
$td.html()
stattdessen verwenden.quelle