基本上,我想从服务器上的文档中提取div标签中的文本,以将其放在当前文档中。解释原因:我想从“新闻文章”中删除标题,将其用作该文章链接的文本。
例如,在目标HTML中是标记:
<div id='news-header'>Big Day in Wonderland</div>
因此,在我目前的文档中,我想使用javascript将我的锚标记中的文本设置为标题,即:
<a href='index.php?link=to_page'>Big Day in Wonderland</a>
我无法弄清楚如何在JS中访问非当前文档。
提前感谢您的帮助。
ADDED:Firefox样式问题(请参阅下面的评论)。
答案 0 :(得分:3)
我不确定您在哪里获取HTML,但假设您已将其添加到字符串中,则可以create a document of your own将HTML填入其中,然后使用标准getElementById
拉出你想要的那件。例如:
var doc = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null);
doc.documentElement.innerHTML = '<body><div>Nonsense</div><div id="news-header">Big Day in Wonderland</div><p>pancakes</p></body>';
var h = doc.getElementById('news-header');
// And now use `h` like any other DOM object.
实时版:http://jsfiddle.net/ambiguous/ZZq2z/1/
使用jQuery,这当然会容易得多。
答案 1 :(得分:1)
您需要将远程文档的内容拉入当前DOM,如QuentinUK所述。我推荐像jQuery的.load()方法
答案 2 :(得分:1)
通常,我会尝试仅使用用户指定的工具来解决问题;但是如果你使用的是javascript,那么就没有理由不使用jQuery。
<a id='mylink' href='url_of_new_article' linked_div='id_of_title'></a>
$(function() {
var a = $('#mylink');
a.load(a.attr('href') + ' #' + a.attr('linked_div'));
});
那里的小功能可以帮助您动态更新所有链接的文本。如果您有多个,可以将其放在$('a').each()
循环中,并将其称为一天。
更新以支持多个链接:
$(function() {
$('a[linked_div]').each(function() {
var a = $(this);
a.load(a.attr('href') + ' #' + a.attr('linked_div'));
});
});
选择器确保只处理存在属性“linked_div”的链接。