4

在这里,我添加了每个 '. cmsCategories 的 div 到 item_array,但随后 .replace() 不适用于 item_array 键。我怎样才能解决这个问题?(在此之后,我会将新内容写回 div)。任何帮助都是极好的!

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

5 回答 5

6

1) replace 函数不会改变你传递的字符串(字符串是不可变的):它返回一个新的。

做 :

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

或者

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

2)在此操作之后,您必须再次更改 DOM$('someselector').html(item_array[0]);


您需要的完整代码类似于

$("[class=' cmsCategories']").each(function(i, obj) {
    var html = $(this).html();
    html = html.replace ...
    $(this).html(html);
});
于 2012-09-19T15:06:48.237 回答
3

replace 方法不会修改原始值。您必须执行以下操作:

item_array[0] = item_array[0]
     .replace("icon_dog", "<img src='img/icon_dog.png' alt='icon_dog' />"); 
于 2012-09-19T15:07:08.920 回答
2

你应该做

item_array[0] = 
    item_array[0].replace("icon_dog", "<img src='img/icon_dog.png' alt='icon_dog' />")
于 2012-09-19T15:08:00.497 回答
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

于 2012-09-19T15:08:40.770 回答
1

更新了你的 jsFiddle,你忘记了 array = array.replace。

http://jsfiddle.net/QKHJJ/3/

于 2012-09-19T15:09:17.370 回答