То, что вы просите, напоминает мне о том, как работает WML , когда на одной странице несколько карточек, только одна из которых показывается одновременно. Можно загружать содержимое одной страницы на другую, но не так, как вы себе представляете.
Как вы можете догадаться из названия, getElementById
получает элемент, основанный на атрибуте ID, и ничего больше. Вместо этого вам необходимо загрузить содержимое другой страницы, после чего вы сможете отобразить его части по запросу.
В popupBox.js:
var show_hide_box;
# it may not be best to set width, height and border this early,
# but it simplifies the code below
(function(width, height, border) {
var pages = {};
function show_hide_box(link) {
var path = (/^[^#]*/.exec(link.href))[0];
if (pages[path]) {
show_content(pages[path], link);
} else {
fetch_content(link, path);
}
return false;
}
function show_content(path, link) {
var id = (/#(.*)/.exec(link.href))[1];
if (content[id]) {
# Show content[id], which is a DOM node
...
} else {
# the page exists, but not the fragment. Could search
# content.elements for the
...
}
}
function fetch_content(link, path) {
$.ajax({
url: link.href,
success: function(data, textStatus, jqXHR) {
pages[path] = {elements: $(data).filter('p')};
pages[path].elements.each(function (idx, elt){
# TODO: handle elements w/ no id
pages[path][elt.id] = elt;
});
show_hide_box(link);
},
error: function(jqXHR, textStatus, errorThrown) {
# Can't load the content, so just load the page.
window.location.href = link.href;
}
);
}
window.show_hide_box = show_hide_box;
})(400,400,'2px solid');
$(function() {
$('.external_content').click(function(evt) {
show_hide_box(this);
evt.preventDefault();
});
});
На другой странице:
<body>
show content of <a href="TreadDepth.html#part1" class="external_content">part one</a>.
show content of <a href="TreadDepth.html#part2" class="external_content">part two</a>.
show content of <a href="TreadDepth.html#part3" class="external_content">part three</a>.
</body>
Обычно считается, что лучше подписывать прослушиватели событий в сценарии, чем inline в HTML. Кроме того, не используйте « нажмите здесь » для текста ссылки.