По сути, я хочу вытащить текст в теге div из документа на моем сервере, чтобы поместить его в текущий документ. Объяснить причину: я хочу вывести заголовок из «статьи новостей», чтобы использовать его в качестве текста для ссылки на эту статью.
Например, в целевом HTML есть тег:
Big Day in Wonderland
Поэтому в моем текущем документе я хочу использовать javascript для установки текста в моих привязанных тегах на этот заголовок, то есть:
Big Day in Wonderland
У меня возникли проблемы с выяснением того, как получить доступ к второстепенному документу в JS.
Заранее спасибо за вашу помощь.
ADDED: проблема в стиле Firefox (см. Комментарий ниже).
Обычно я пытаюсь решить проблему только с помощью инструментов, указанных пользователем; но если вы используете javascript, действительно нет веской причины не просто использовать jQuery.
$(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’.
Я не уверен, где вы получаете свой HTML, но, предположив, что у вас уже есть его в строке, вы можете создать собственный документ , наполнить его HTML, а затем использовать стандартный getElementById
чтобы вытащить часть, которую вы хотеть. Например:
var doc = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null); doc.documentElement.innerHTML = 'NonsenseBig Day in Wonderlandpancakes
'; var h = doc.getElementById('news-header'); // And now use `h` like any other DOM object.
Живая версия: http://jsfiddle.net/ambiguous/ZZq2z/1/
Это, конечно, было бы намного проще с jQuery.
Вам нужно вывести содержимое удаленного документа в текущую DOM, как упоминал QuentinUK. Я бы рекомендовал что-то вроде метода jQuery .load ()