Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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 自动将某个单词(或单词序列)的每次出现链接到预定义的URL(无歧义);但不显示完整的URL_Javascript_Wikipedia - Fatal编程技术网

Javascript 自动将某个单词(或单词序列)的每次出现链接到预定义的URL(无歧义);但不显示完整的URL

Javascript 自动将某个单词(或单词序列)的每次出现链接到预定义的URL(无歧义);但不显示完整的URL,javascript,wikipedia,Javascript,Wikipedia,类似于:。然而,我宁愿不让整个超链接的URL可见,而让最终用户只看到超链接的外观我也不知道如何使用replace()-JS函数,就像在下面的帖子中使用的一样:,来解决同样的问题同样类似于JS的问题:,但我猜给出的答案不能预先区分模糊的术语 如何将每个出现的单个单词或单词序列自动链接到它们各自预定义的URL? 在(a)某些HTML页面中,是否可以: 手动预定义;或者自动(Cf:)一个单字列表及其相应的(i.c.维基百科)-文章 这样,文档中的每个(这样耦合的)单词都会自动接收到相应(i.c.Wi

类似于:。然而,我宁愿不让整个超链接的URL可见,而让最终用户只看到超链接的外观我也不知道如何使用
replace()
-JS函数,就像在下面的帖子中使用的一样:,来解决同样的问题同样类似于JS的问题:,但我猜给出的答案不能预先区分模糊的术语

如何将每个出现的单个单词或单词序列自动链接到它们各自预定义的URL? 在(a)某些HTML页面中,是否可以:

  • 手动预定义;或者自动(Cf:)一个单字列表及其相应的(i.c.维基百科)-文章
  • 这样,文档中的每个(这样耦合的)单词都会自动接收到相应(i.c.Wikipedia)-文章的预定义链接
例如:

(1)无论单词单元格出现在何处,该单词都应接收链接:,以给出以下结果:a不过是a


所以,我真正想做的是模拟任何事物本身所发生的事情(尽管我不知道这是否是自动化的)


任何帮助都将不胜感激。

从您链接的问题开始,很容易修改它以实现您的目标。首先假设我们有一个短语和链接列表,如下所示:

var words = [
    { word: 'foo', link: 'http://www.something.com' },
    { word: 'Something Else', link: 'http://www.something.com/else' ]
];
我们可以迭代该列表,替换文档中出现的任何内容,但在插入的文本中包含我们正在搜索的单词。我也添加了一个工具提示来展示你还可以做什么

$(function() {
    $.each(words,
        function() {
            var searchWord = this.word;
            var link = this.link;
            $('body:contains("' + searchWord + '")').each(function() {
                var newHtml = $(this).html().replace(searchWord, 
                    '<a class="wikilink" title="here is a link to Wikipedia" href="'+link+'">' + searchWord + '</a>');
                $(this).html(newHtml);
            });
        }
    );
});
$(函数(){
$。每个(字,
函数(){
var searchWord=this.word;
var link=this.link;
$('body:contains(“+searchWord+”)。每个(函数(){
var newHtml=$(this).html().replace(searchWord,
'');
$(this.html(newHtml);
});
}
);
});

还有一个有效的例子:

SO不适用于广泛的问题、建议或帮助查找插件。请审阅:标签应用于表示问题的内容。我没有看到任何关于JavaScript的问题。编辑的标签。谢谢。您使用什么创建此文档?@grovesNL-谢谢您的问题:我现在在问题中指定了文档类型:“普通”
HTML
——或者你是想问我的朋友?特别是我,我正在使用Drupal创建这篇
HTML
-文章@Sparky-感谢您的编辑。我认为人们可能会以某种方式将JS用于
replace()我还编辑了我的问题,希望它的技术细节尽可能清晰和中肯;谢谢。非常感谢你的回答。我非常喜欢你把维基百科的链接也包括在内您的答案比中给出的答案有优势,因为您的答案可以包含预定义的URL,这对我来说是直接链接到特定页面(例如Cell_biology)时所必需的,而无需指向(例如Cell)消歧页面(使用超链接帖子的答案,这是预期的行为。你确定这是一个无止境的循环,而不仅仅是竞争条件吗?例如,此脚本是否启动了其他脚本,从而导致此脚本再次运行?此外,此脚本是否包装在文档就绪检查
$(function(){code here})中
?逐步浏览代码并查看到底发生了什么。让它运行一秒钟,然后在调试器中暂停。您最好只替换页面某些区域中的单词。若要更改,只需使用不同的选择器替换
body:contains
。因此,如果您的文本块被包装在带有class
blog您将使用
.blog:contains
正如我上面所说的,如果您使用特定的选择器,它将起作用。将您的全部内容包装在
div
中,然后改用它。