2012-09-19 164 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

相关问题