2012-09-19 74 views
4

這裏我添加了每個文本。 cmsCategories'div to item_array,但是然後.replace()在item_array鍵上不起作用。我怎樣才能解決這個問題? (在此之後,我會將新內容寫回到div中)。任何幫助都是極好的!爲什麼javascript .replace不能在這個數組鍵上工作?

http://jsfiddle.net/QKHJJ/1/

的Javascript:

$(document).ready(function() { 

var item_array=new Array(); 

$("[class=' cmsCategories']").each(function(i, obj) { 
item_array.push(obj.innerHTML); 
}); 

item_array[0].replace("icon_dog", "<img src='img/icon_dog.png' alt='icon_dog' />"); 
item_array[0].replace("icon_cat", "<img src='img/icon_cat.png' alt='icon_cat' />"); 

alert(item_array[0]); 


}); 

HTML:

<ul class="cmsSmartListResults"> 
    <li> 
    <div class=" cmsCategories">icon_cat, apple, icon_dog, pear, banana</div> 
    <a href="" class=" cmsPageLink"></a> 
    <div class=" cmsDescription"></div> 
    <div class=" cmsFileSize"></div> 
    <a class=" cmsMoreLink"></a> 
</li> 
    <li> 
<div class=" cmsCategories">apple, icon_dog</div> 
<a href="" class=" cmsPageLink"></a> 
<div class=" cmsDescription"></div> 
<div class=" cmsFileSize"></div> 
<a class=" cmsMoreLink"></a> 
</li> 
    <li> 
    <div class=" cmsCategories">pear, banana</div> 
    <a href="" class=" cmsPageLink"></a> 
    <div class=" cmsDescription"></div> 
    <div class=" cmsFileSize"></div> 
    <a class=" cmsMoreLink"></a> 
</li> 
</ul> 
+0

參見https://stackoverflow.com/questions/1433212/replace-method-doesnt-work – Bergi

回答

6

1)替換功能不會改變你傳遞字符串(string是不可改變的):它返回一個新的。

務必:

var newString = item_array[0].replace(... 

item_array[0] = item_array[0].replace(... 

2)此操作後,你必須用$('someselector').html(item_array[0]);


你需要完整的代碼是再次改變DOM像

$("[class=' cmsCategories']").each(function(i, obj) { 
    var html = $(this).html(); 
    html = html.replace ... 
    $(this).html(html); 
}); 
+0

或者分配'替換()'d值返回到原來的變量。 –

+0

嗨我要寫回dom之後 - 如果你檢查jsfiddle的關鍵值是不是改變了.replace - 我錯過了什麼? – Joe

+0

啊謝謝你的回答 - 我現在明白了! :) – Joe

3

替換方法不會修改原始值。你必須做一些事情,如:

item_array[0] = item_array[0] 
    .replace("icon_dog", "<img src='img/icon_dog.png' alt='icon_dog' />"); 
+0

感謝您的回答! – Joe

2

你應該做

item_array[0] = 
    item_array[0].replace("icon_dog", "<img src='img/icon_dog.png' alt='icon_dog' />") 
+0

感謝您的回答! – Joe

2

我認爲你的替代說法是不正確。嘗試這個。

item_array[0] = item_array[0].replace("icon_dog", "<img src='img/icon_dog.png' alt='icon_dog' />"); 
item_array[0] = item_array[0].replace("icon_cat", "<img src='img/icon_cat.png' alt='icon_cat' />"); 

jsFiddle

+0

感謝您的回答! – Joe

+1

沒問題!希望能幫助到你! – JoeFletch

相關問題