заменить содержимое div другим содержимым
Я строил список ссылок, все из которых должны изменить содержимое div на другое конкретное содержимое (около 4 строк материала: имя, веб-сайт, контакт и т. д.) по щелчку.
Я нашел этот код:
<script type="text/javascript">
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
</script>
и использовал его таким образом:
<li class="pl11">
<a href="javascript:ReplaceContentInContainer('wojewodztwo', '<a href="http://address.com">superlink</a>')">Pomorskie</a>
</li>
и это не работает, как я ожидал.
Он изменяет текст гиперссылки с "поморские" на "суперлинк".
обычный текст работает просто отлично, но мне нужно связи.
вот http://xn--pytyfundamentowe-jyc.pl/projektanci/kontakty-p/ (только двое из них показывают что-нибудь)
но, попробовав все ваши рекомендации, я думаю, что я бы перескочил на разные divs с # links, потому что ничего не работало с этим :/
большое спасибо за попытку, и ура:)
3 ответов
так же, как полностью боковым взглядом на это, я бы предложил избежать странности / сложности вложенности и уменьшить проблему.
настройка содержимого в скрытом (т. е. <div id="replacements">...</div>
) возьми innerHTML
от узла, который вы хотите, и покончить с этим.
гораздо проще получить заменяющий контент от не-разработчиков таким образом, тоже отлично работает, если вы в команде.
// Probably better in a separate helpers.js file.
function replaceContentInContainer(target, source) {
document.getElementById(target).innerHTML = document.getElementById(source).innerHTML;
}
контролировать его с: (потерять, что href=javascript:
и используйте onClick, лучше как событие обработчик, но для краткости я встрою его в качестве атрибута onClick здесь и использую кнопку.)
<button onClick="replaceContentInContainer('target', 'replace_target')">Replace it</button>
у нас есть наша цель где-то в документе.
<div id="target">My content will be replaced</div>
тогда содержание замены сидит скрытый внутри замены div.
<div id="replacements" style="display:none">
<span id="replace_target"><a href="http://address.com">superlink</a></span>
</div>
вот он в JSBin
улучшить динамический характер этого с помощью руль или другая хорошая библиотека шаблонов JS, но это упражнение для OP.
edit: обратите внимание, что вы также должны назвать функции с ведущей строчной буквой и зарезервировать стиль верхнего регистра для имен классов, например var mySweetInstance = new MySpecialObject();
цитаты не совпадают! Поэтому, когда вы нажимаете, вы получаете ошибку JavaScript.
браузер видит эту строку:
href="javascript:ReplaceContentInContainer('wojewodztwo', '<a href="http://address.com">superlink</a>')">Pomorskie<
as:
href="javascript:ReplaceContentInContainer('wojewodztwo', '<a href="
Chnage " внутри к @quot;
<li class="pl11">
<a href="javascript:ReplaceContentInContainer('wojewodztwo', '<a href=@quot;http://address.com@quot;>superlink</a>')">Pomorskie</a>
</li>
пример скрипка.
Отметим также, используя тег href на JavaScript-это плохая практика.
у вас проблема с вложенными кавычками. Посмотрите в своем инспекторе DOM, чтобы увидеть, что из него построен HTML-парсер! (in демо, например)
вам либо нужно HTML-escape кавычки внутри атрибута как "
или "
, или преобразовать их в апострофы и избежать их внутри строки JS с обратными косыми чертами:
<a href="j[…]r('wojewodztwo', '<a href="http://address.com">superlink</a>')">…
<a href="j[…]r('wojewodztwo', '<a href=\'http://address.com\'>superlink</a>')">…
посмотреть рабочую демо здесь и здесь.
лучше, вы должны используйте