我想在锚标签中搜索字符串,当我只搜索没有空格的“快乐”时它工作正常但是当我用“快乐”这样的空间搜索它时它不起作用。
以下是代码示例:
<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>
答案 0 :(得分:2)
因为作为URL的href获得了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 "));
}
答案 1 :(得分:0)
当我在Firefox中这样做时,我从toString()
得到的字符串是:
file:///home/pax/Happy%20coding!!
如果那是你所看到的,那么当然你将无法在那里找到"Happy "
。当我将搜索语句更改为:
document.write( bDayId.indexOf("Happy%20"));
然后它运作正常。
也许您可能想要考虑对搜索字符串进行网址编码,类似于浏览器在toString()
中执行此操作的方式:
document.write( bDayId.indexOf(encodeURIComponent("Happy ")));
当然,这是假设我对编码是正确的。您没有提供HTML的实际输出,因此有点难以辨别。
将这些内容发布为您的问题的编辑是值得的。
答案 2 :(得分:0)
使用正则表达式匹配字符串 查看以下URL将有所帮助: http://www.tizag.com/javascriptT/javascript-string-replace.php
答案 3 :(得分:0)
从链接href属性检索时,空格将被编码为“%20”。 尝试以下内容:
bDayId = decodeURIComponent(hrefTags.item(hrefIndex).href.toString());