Javascript 字符串替换没有效果

标签 javascript jquery html string

我有以下结构:

<span class="h1">Color green</span>
<div class="swatchesContainer">
    <img title="green" src="/"/>
    <img title="blue" src="/"/>
</div>

现在我想将范围中的颜色更改为图像的标题中指定的颜色。 (不,我无法添加带有颜色名称的类)

我尝试过以下代码:

var product_name = jQuery(".h1").text();
jQuery(".swatchesContainer img").click(function(){

    var selected_color = jQuery(this).attr('title');
    var string;
    console.log("String before: " + product_name);

    jQuery('.swatchesContainer img').each(function(){
        string = product_name.replace(jQuery(this).attr('title').trim(),' ');
        console.log(jQuery(this).attr('title'));
    })
    console.log("String after: " + string);
    jQuery(".h1").text(string + " " +selected_color);
});

我正在从图像中获取所有 title 属性,并在同一 foreach 函数中从文本中替换它们

但是新颜色不断附加在现有颜色之后

JSFiddle

最佳答案

你的逻辑有问题。在循环内,您重复覆盖 string 变量:

string = product_name.replace(...)

在循环结束时,您将得到 "Color green".replace("blue", "") -> "Color green"

更改这些行:

var string;
// ...
string = product_name.replace(jQuery(this).attr('title').trim(),' ');

致这些:

var string = product_name;
// ...
string = string.replace(jQuery(this).attr('title').trim(),' ');

Updated Fiddle

<小时/>

话虽如此,我宁愿将标记更改为:

<span class="h1">Color <span class="chosen-color">green</span></span>
<div class="swatchesContainer">
    <img title="green">
    <img title="blue">
</div>

并覆盖.chosen-color的内容,而不是获取/匹配/替换.h1内的整个文本。您的 jQuery 代码将减少为一行。

关于Javascript 字符串替换没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26930994/

相关文章:

javascript - 使用 Angular js 单击按钮时如何复制 HTML 表格代码?

javascript - jQuery:修改文本区域内的 A 标签

javascript - Cookie 未通过

javascript - NodeJs MYSQL 序列批量插入最佳实践

javascript - Internet Explorer 中的工具提示问题

javascript - html 标签条目的正则表达式

javascript - 将 parse get 显示为字符串 (javascript)

jquery - Reload $(document).ready(function() ajax页面重新加载后

javascript - gridster 拖放不起作用

javascript - 无法将 d3js 运行到网站(jupyter notebook)