To najwyraźniej nie działa:
X = $td.text();
if (X == ' ') {
X = '';
}
Czy jest coś w nierozdzielającej spacji lub znaku ampersand, czego JavaScript nie lubi?
javascript
jquery
Phillip Senn
źródło
źródło
.text()
usuwa znaczniki, więc nie wierzę, że znajdziesz
wynik bez znaczników.Odpowiedzi:
jest jednostką HTML. Podczas wykonywania.text()
wszystkie jednostki HTML są dekodowane do ich wartości znakowych.Zamiast porównywać za pomocą encji, porównaj używając rzeczywistego surowego znaku:
Możesz też ręcznie utworzyć znak na podstawie kodu znaku w postaci kodu ucieczki Javascript:
Więcej informacji na temat
String.fromCharCode
dostępnych jest tutaj:Więcej informacji na temat kodów znaków dla różnych zestawów znaków można znaleźć tutaj:
źródło
Pamiętaj, że
.text()
usuwa znaczniki, więc nie wierzę, że znajdziesz
wynik bez znaczników.W odpowiedzi ...
Pokazuje alert, ponieważ zamiast tego zwracany jest odpowiednik kodu ASCII.
źródło
$("<div> </div>").text().charCodeAt()
daje160
(unicode dla nbsp)Ta jednostka jest konwertowana na znak, który reprezentuje, gdy przeglądarka renderuje stronę. JS (jQuery) czyta wyrenderowaną stronę, więc nie napotka takiej sekwencji tekstowej. Jedynym sposobem, w jaki może napotkać coś takiego, jest podwójne kodowanie jednostek.
źródło
Dokumentacja jQuery dla
text()
mówiChciałbym użyć
$td.html()
zamiast.źródło