2012-04-13 6 views
4

Lets sagen, ich habe das.

<div id="somediv"> 
hello, my friend&#39;s &amp; dog are good friends! 
</div> 

Ich denke, dass $(somediv).text().length die Codierungen zählt und nicht die gerenderte Ansicht. Ich mache etwas abgeschnitten auf eine Zeichenfolge, wenn es zu lang ist, und da einige der Zeichenfolgen (dynamisch) &amp; haben können (statt &), wie zähle ich den gesamten Text in einer div in seiner gerenderten Ansicht, nicht codierte Ansicht ordnungsgemäß ?

+0

'' & = 5 Zeichen. Deshalb zählt es als 5 Buchstaben. –

+0

das ist was ich will. Ok, also funktioniert text(). Length (wie vorgesehen) in meiner Sicht, indem ich die & als 1 char (gerendert) zähle. OK. cool. Danke –

+5

Werfen Sie einen Blick auf diese http://stackoverflow.com/questions/1219860/javascript-jquery-html-encoding – MilkyWayJoe

Antwort

3

length wird &amp; und ähnliche Zeichen als ein einzelnes Zeichen zählen. Was das verwirren kann, ist, dass Sie vor und hinter Ihrem String auch Leerzeichen erhalten. Wenn Sie es trimmen, werden Sie sehen, dass es korrekt ist.

http://jsfiddle.net/u3byj/

$.trim($(somediv).text()).length 
0

Sie könnten die folgenden als Alternative tun, wenn kein jQuery verfügbar:

innerHTML.replace(/&(#x?[0-9a-f]+|[a-z]+);/gi,"X").length; 
Verwandte Themen