2010-07-02 118 views
0

请看下面的示例。javascript string.lastIndexOf不适用于范围innerHTML

<html> 
<body> 
<form> 
<span id="spTest">Your current operation: Modify &raquo; newone</span> 
</form> 
<script type="text/javascript"> 
var sp = document.getElementById("spTest"); 
var str = sp.innerHTML; 
//var str = "Your current operation: Modify &raquo; newone"; 
alert(str) 
var index = str.lastIndexOf("&raquo;"); 
alert(index); 

</script> 

</body> 
</html> 

上面的例子会弹出“索引”值-1。如果我取消注释行“”您当前的操作:修改» newone“;”,结果将是30.

所以我认为原因是因为我使用“innerHTML”来获取文本。还有什么我可以使用范围内的文本获得正确的索引结果?

感谢

回答

2

不,它无关innerHTML。在对lastIndexOf的调用中,&raquo;实体没有像在HTML代码中一样展开;相反,它被视为原始字符串。与实际的字符替换它,它会工作:

var index = str.lastIndexOf("»"); 
+0

谢谢,它完美的作品 – user253762 2010-07-05 03:59:45

0

如果您使用innerHTML,你必须使用"»"而不是"&raquo;"

+0

谢谢,它完美的作品 – user253762 2010-07-05 04:00:34