Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery,如果在变量数组中找到,则查找并替换文本_Jquery_Html_Arrays - Fatal编程技术网

JQuery,如果在变量数组中找到,则查找并替换文本

JQuery,如果在变量数组中找到,则查找并替换文本,jquery,html,arrays,Jquery,Html,Arrays,我们的网站上有一个feed,它没有将产品品牌和产品名称与产品名称分开: <div class="productTitle">Brand 1 Product Name</div> 品牌1产品名称 我们希望将品牌分开,这样我们就可以将其包装在自己的div中,并使其风格不同: <div class="productTitle"><div class="brandName">Brand 1</div> Product Name</di

我们的网站上有一个feed,它没有将产品品牌和产品名称与产品名称分开:

<div class="productTitle">Brand 1 Product Name</div>
品牌1产品名称
我们希望将品牌分开,这样我们就可以将其包装在自己的div中,并使其风格不同:

<div class="productTitle"><div class="brandName">Brand 1</div> Product Name</div>
品牌1产品名称
有一个过滤器列表(您可以通过该列表筛选品牌),其中包含所有品牌名称

因此,我一直试图从列表中的每个项目中提取所有文本:

<ul class="filters">
    <li>Brand 1</li>
    <li>Brand 2</li>
    <li>Brand 3</li>
    <li>Brand 4</li>
</ul>
  • 品牌1
  • 品牌2
  • 品牌3
  • 品牌4
将它们存储为数组,然后如果在产品标题文本中找到数组中的任何项,则将该部分包装到它自己的div中以进行样式设置

到目前为止,我已经将列表中的每个项目存储在一个数组中,但无法让它正确查看整个数组,如果它在每个产品标题中找到任何匹配的文本,请将匹配的文本换行:

var brandText =[];
$('.filters li').each(function(index, obj) {
  brandText.push($(this).text());
});




$('.productTitle').html(function (index, text) {
  this.innerHTML = text.replace(brandText, "<div class='brandName'>" + brandText + "</div>");
});

$(window).ajaxComplete(function(){
  $('.productTitle').html(function (index, text) {
    this.innerHTML = text.replace(brandText, "<div class='brandName'>" + brandText + "</div>");
  });
});
var brandText=[];
$('.filters li')。每个(函数(索引,obj){
brandText.push($(this.text());
});
$('.productTitle').html(函数(索引,文本){
this.innerHTML=text.replace(brandText,“+brandText+”);
});
$(窗口).ajaxComplete(函数(){
$('.productTitle').html(函数(索引,文本){
this.innerHTML=text.replace(brandText,“+brandText+”);
});
});
当I console.log varbrandText时,它返回控制台中的所有122个品牌,但在每个产品标题(通常每页60个产品)中找不到文本,并将该文本换行

有人能帮忙吗


谢谢

因为brandText是一个品牌数组,所以您必须循环每个品牌。

您必须迭代
brandText
数组,并替换所有出现的品牌(如果有)。这样就足够了:

$('.productTitle').html(function(index, text) {
    brandText.forEach(function(brand) {
        text = text.replace(brand, "<div class='brandName'>" + brand + "</div>");
    });
    return text;
});

  • 品牌1
  • 品牌2
  • 品牌3
  • 品牌4
品牌1产品名称 品牌2产品名称 品牌3产品名称
Brand 4 Product Name
brandText是一个数组,我认为您无法将数组传递到。替换时,您需要循环数组并分别替换每个数组(不确定是否有更有效的方法)