2011-12-20 66 views
3

我想搜索在锚标记上的弦,当我只需搜索“快乐”无空间但是当我与像一些空间搜索它,它工作正常“快乐“它不起作用。javascript函数的indexOf()在Chrome不工作以空格字符串

下面是代码示例:

<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> 

回答

2

它,因为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 ")); 
} 
+0

感谢Dhruv获取重要信息,现在就开始工作。 – 2011-12-20 08:08:43

0

当我在Firefox中,我从toString()得到字符串是:

file:///home/pax/Happy%20coding!! 

如果这就是你看到的那么你当然在那里将无法找到"Happy "。当我将搜索语句更改为:

document.write(bDayId.indexOf("Happy%20")); 

然后它工作正常。

也许你可能要考虑URL编码类似,你的浏览器的方式搜索字符串中toString()

document.write(bDayId.indexOf(encodeURIComponent("Happy "))); 

这是当然,假设我说得对编码。您没有提供HTML的实际输出,因此有点难以分辨。

这将是值得发布的,作为您的问题的编辑。

0

从链接href属性中检索时,该空间将被编码为“%20”。 尝试以下方法:

bDayId = decodeURIComponent(hrefTags.item(hrefIndex).href.toString());