我想在锚标记中搜索字符串,当我简单地搜索没有空间的"Happy"时,它工作得很好,但是当我搜索像"Happy"这样的空间时,它不起作用。
下面是代码示例:<html>
<body>
<a style="color:#555555" href="Happy coding!!">test</a>
<br/>
<script type="text/javascript">
var hrefTags = document.getElementsByTagName("a");
var bDayId = "";
var stringToSearch = "Happy coding!!";
for(var hrefIndex=0; hrefIndex < hrefTags.length; hrefIndex ++){
bDayId = hrefTags.item(hrefIndex).href.toString();
document.write(bDayId+"<br/>");
document.write( bDayId.indexOf("Happy "));
}
</script>
</body>
</html>
这是因为href作为URL被URL编码,空格变成了'%20'
。带空格的Href是无效的Href,因此如果你想在Href属性中存储一些信息,请使用另一个属性。或者,如果您想读取和字符串比较href属性与空格,在正确的url解码后比较。http://jsfiddle.net/Sddv6/1/
var hrefTags = document.getElementsByTagName("a");
var bDayId = "";
var stringToSearch = "Happy coding!!";
for(var hrefIndex=0; hrefIndex < hrefTags.length; hrefIndex ++){
bDayId = decodeURIComponent(hrefTags.item(hrefIndex).href);
document.write(bDayId);
document.write(bDayId+"<br/>");
document.write( bDayId.indexOf("Happy "));
}
使用正则表达式匹配字符串看看下面的网址会有帮助:http://www.tizag.com/javascriptT/javascript-string-replace.php
从link href属性检索时,空格将被编码为"%20"。试试下面的内容:
bDayId = decodeURIComponent(hrefTags.item(hrefIndex).href.toString());
当我在Firefox中这样做时,我从toString()
得到的字符串是:
file:///home/pax/Happy%20coding!!
如果这就是你所看到的,那么你当然无法在那里找到"Happy "
。当我将搜索语句更改为:
document.write( bDayId.indexOf("Happy%20"));
那么它可以正常工作。
也许您可能想要考虑url编码搜索字符串类似于您的浏览器在toString()
:
document.write( bDayId.indexOf(encodeURIComponent("Happy ")));
当然,这是假设我对编码是正确的。您没有提供来自HTML的实际输出,因此有点难以分辨。