이것은 분명히 작동하지 않습니다.
X = $td.text();
if (X == ' ') {
X = '';
}
깨지지 않는 공백이나 JavaScript가 좋아하지 않는 앰퍼샌드에 대한 것이 있습니까?
답변
HTML 엔티티입니다. 를 수행 .text()
하면 모든 HTML 엔티티가 문자 값으로 디코딩됩니다.
엔티티를 사용하여 비교하는 대신 실제 원시 문자를 사용하여 비교하십시오.
var x = td.text();
if (x == '\xa0') { // Non-breakable space is char 0xa0 (160 dec)
x = '';
}
또는 Javascript 이스케이프 형식으로 문자 코드에서 문자를 수동으로 만들 수도 있습니다.
var x = td.text();
if (x == String.fromCharCode(160)) { // Non-breakable space is char 160
x = '';
}
자세한 내용은 String.fromCharCode
여기에서 확인할 수 있습니다.
다른 문자 세트의 문자 코드에 대한 자세한 정보는 여기에서 확인할 수 있습니다.
답변
.text()
마크 업 을 제거하므로 마크 업
이 아닌 결과에서 찾을 수 없다고 생각합니다 .
답변으로 만들어졌습니다 ….
var p = $('<p>').html(' ');
if (p.text() == String.fromCharCode(160) && p.text() == '\xA0')
alert('Character 160');
대신 마크 업에 해당하는 ASCII가 반환되므로 경고를 표시합니다.
답변
해당 엔티티는 브라우저가 페이지를 렌더링 할 때 나타내는 문자로 변환됩니다. JS (jQuery)는 렌더링 된 페이지를 읽으므로 이러한 텍스트 시퀀스가 발생하지 않습니다. 이러한 문제를 만날 수있는 유일한 방법은 엔터티를 이중 인코딩하는 경우입니다.
답변
대한이의 jQuery 문서 text()
말한다
다른 브라우저에서 HTML 파서의 변형으로 인해 반환되는 텍스트는 줄 바꿈 및 기타 공백이 다를 수 있습니다.
$td.html()
대신 사용하겠습니다 .