Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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
Javascript替换问题(使用alt和title atribbutes)_Javascript_Jquery_Regex - Fatal编程技术网

Javascript替换问题(使用alt和title atribbutes)

Javascript替换问题(使用alt和title atribbutes),javascript,jquery,regex,Javascript,Jquery,Regex,我有以下代码: function getArticleContent() { var toPromote = 'example'; var toReplace = '<a href="/tags/'+toPromote+'">'+toPromote+'</a>'; var content = $(".a-entry").text(); if (content.search(toPromote) > -1) {

我有以下代码:

function getArticleContent() {

    var toPromote = 'example';

    var toReplace = '<a href="/tags/'+toPromote+'">'+toPromote+'</a>';

    var content = $(".a-entry").text();

    if (content.search(toPromote) > -1)
    {           
       $('.a-entry').html($('.a-entry').html().replace(new RegExp(toPromote, "g"), toReplace) );
    }
    else
    {
        //
    }
}
$(document).ready(function() {
    getArticleContent();
});
函数getArticleContent(){ var toPromote='示例'; var-toReplace=''; var content=$(“.a-entry”).text(); if(content.search(toPromote)>-1) { $('.a-entry').html($('.a-entry').html().replace(新的RegExp(toPromote,“g”),toReplace)); } 其他的 { // } } $(文档).ready(函数(){ getArticleContent(); }); 代码工作正常,但如果图像或链接的title或alt属性与我要替换html的文本相同,则代码将被破坏,因为脚本将链接放在alt或title标记中

致意


我正在尝试这样做:

<div id="article">
 <p>Some text here, bla bla.</p>
</div>

这里有一些文字,等等

在JS函数之后,我希望:

<div>
    <p>Some text <a href="/tags/here">here</a>, bla bla.</p>
</div>

一些文字,等等

尝试使用jQuery.attr()标记替换href属性或其.text()上的标记,这是您希望更改的内容

否则,显示一些标记可能会有助于查看您到底想要什么(在示例之前/之后)


您可以这样做,但可能有一种更短的方法(文本节点对我来说非常罕见):

函数getArticleContent(){ var toPromote='示例'; $(“.a-entry”).contents().filter(函数(){返回this.nodeType==3;}) .each(函数({ 如果(此节点值索引of(toPromote)>-1) $(this.replaceWith)(this.nodeValue.replace)(新的RegExp(toPromote,“g”), 函数(m){返回“”;}) ); }); } $(getArticleContent);​
。这会专门过滤文本节点,对于其中的文本节点,它会循环浏览,如果文本存在,则会将每个匹配项替换为相应的链接。

他们这样说是有原因的。它们混不好。使用dom解析器。+1-我喜欢使用内容、过滤器和节点类型。回答很好。脚本可以工作,但它可以从BD获得文章的详细信息和标签,例如:我的文本在这里…

Thx但仍然不工作,我想我会休息一下,然后尝试后一种方法,Thx获得答案:)@iulian-这是一个与您的示例完全相同的版本:
.attr('href',yournewstuff);
.text(yournewstuff);
function getArticleContent() {
  var toPromote = 'example';
  $(".a-entry").contents().filter(function() { return this.nodeType == 3; })
    .each(function() {
      if(this.nodeValue.indexOf(toPromote) > -1)
        $(this).replaceWith(this.nodeValue.replace(new RegExp(toPromote, "g"), 
            function(m) { return '<a href="/tags/'+m+'">'+m+'</a>'; })
        );
    });
}
$(getArticleContent);​