用JQuerys包含选择器替换Javascript子字符串

时间:2019-07-11 07:08:21

标签: javascript jquery

我正在尝试在HTML表的列中查找特定行,并使用给定值替换特定字符串的出现。

我尝试使用JQuery的.html,但是它只是将行中的所有内容替换为给定值。一个.text().replace()向我返回了错误。

这是我的代码:

function ReplaceCellContent(find, replace)
    {      
        //$(".export tr td:nth-child(4):contains('" + find + "')").html(function (index, oldHtml) {
        //    return oldHtml.replace(find, replace);
        //});

        $(".export tr td:nth-child(4):contains('" + find + "')").text($(this).text().replace(find, replace));

        //$(".export tr td:nth-child(4):contains('" + find + "')").html(replace);
    }



$('.export tr td:nth-child(4)').each(function () {
                        var field = $(this).text();
                        var splitter = field.split(':');

                        if (splitter[2] === undefined) {
                            return true;
                        } else {
                            var splitter2 = splitter[2].split(',');
                        }

                        if (splitter2[0] === undefined) {
                            return true;
                        } else {
                            $.post(appPath + 'api/list/', {action: 'getPW', pw: splitter2[0]})
                                .done(function (result) {
                                    ReplaceCellContent(splitter2[0], result);
                                });


                        }
                    });

我正在遍历第4列的每一行并提取正确的字符串。这是通过对我的函数的AJAX发布调用来完成的,该调用返回我要替换为新字符串的字符串。

splitter2[0] // old value
result // new value

我希望有人能帮助我。我对JS / JQuery没那么深入。

3 个答案:

答案 0 :(得分:1)

findSmith findJill findJohn

 var classes = document.getElementsByClassName("classes");
    var replaceCellContent = (find, replace) => {
        for (var i = 0; i < classes.length; i++) {
            if (classes[i].innerText.includes(find)) {
                classes[i].innerText = classes[i].innerText.replace(find, replace);
            }
        }
    }

这会将所有“填充”事件替换为“外观”。 我喜欢使用香草JS,我并不是JQuery的狂热者,但这肯定可以在您的代码上使用。

答案 1 :(得分:0)

说给所有表行一个类名“ trClasses”

var rows = document.getElementsByClassName("trClasses");
for (var I = 0; I < rows.length; I++) {
     rows.innerText.replace("yourText");
}

innerText属性将返回HTML标记中的文本。

我也是新手,但这应该可行。祝您编码愉快!

答案 2 :(得分:0)

这样做:

var tds = $("td"); 
  for( var i = 0; i < tds.length ; i++){ 
   if ( $(tds[i]).text().includes("abc") ){ 
      var replacetext = $(tds[i]).text().replace("abc", "test");
      $(tds[i]).text(replacetext);
   } 
 }