2011-12-20 8 views
3

アンカータグで文字列を検索したい場合は空白なしで単純に「ハッピー」を検索するとうまくいきますが、ハッピー "それは動作しません。javascript関数indexOf()は文字列内の空白を含むクロムでは機能しません

以下

コードサンプルです:

<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属性にいくつかの情報を格納する場合は、別の属性を使用してください。適切なURLのデコード後にhref属性とスペースを比較して比較してください。 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

重要な情報はありがとうございます。 –

0

私はFirefoxで、私はtoString()から取得した文字列があることを行うと:

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

それはあなたが、その後の進路あなたを見ているものだ場合そこに"Happy "が見つかりません。検索文を変更すると、

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

となります。

おそらくあなたは、URLエンコードブラウザはtoString()でそれをしないのと同様に、検索文字列を考えてもよいでしょう。

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

これは私がおよそ右だと仮定すると、当然のことながら、ありますエンコーディングあなたはあなたのHTMLからの実際の出力を提供していないので、伝えるのは少し難しいです。

あなたの質問の編集として投稿する価値があります。

次のURLで文字列 一見の照合に使用する正規表現を助ける
0

スペースは、リンクhref属性から取得する際に "%20"としてエンコードされます。 以下を試してください:

bDayId = decodeURIComponent(hrefTags.item(hrefIndex).href.toString()); 
関連する問題