2011-12-20 38 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());