我是JavaScript新手,现在非常绝望
我有一个HTML文件:
如果您运行代码,您将看到每次单击链接时都会显示新的div ...
当前的问题:
我的代码如下:
function showContent(obj)
{
var linkTo = obj.getAttribute("href");
var newlinkTo=linkTo.replace('#','');
//alert (newlinkTo);
document.getElementById(newlinkTo).innerHTML=" This is where the xml variable content should go";
document.getElementById(newlinkTo).className += " Show";
return true;
}
<a href="#b0" onClick="return showContent(this);">
<div id="text_content"> link2 </div>
</a>
<a href="#b1" onClick="return showContent(this);">
<div id="text_content"> link 1 </div>
</a>
<div class='box' id='b0'> abstract content </div>
<div class='box' id='b1'> introduction content </div>
答案 0 :(得分:2)
我通常不会到处使用jQuery,但是你可以这样做:
<a class='showContent' data='b0'/>
你的js:
var selected;
$('a.showContent').on('click',function(e){
var toShow = $(this).attr('data');
if(selected!==undefined) selected.removeClass('Show');
selected = $(div+'#'+toShow);
selected.addClass('Show');
});
不确定这是否是您想要的,但我想我会建议。
答案 1 :(得分:1)
有一种清洁方式可以做到这一点:
这只是我的简单示例,它可以比这更清洁,但这适用于您的情况:
HTML:
<a href="#b0" id="b0-link" class="link" rel="b0">link b0</a>
<a href="#b1" id="b1-link" class="link" rel="b1">link b1</a>
<div class='box' id='b0'> abstract content </div>
<div class='box' id='b1'> introduction content </div>
CSS:
#b0 { display: none; }
#b1 { display: none; }
a, div.text_content { display: inline; padding: 0 10px; }
JQUERY:
$('.link').click(function(){
var id = $(this).attr("rel");
$('#'+id).slideToggle('slow');
});
每个链接都必须具有REL属性,该属性与您尝试显示的div元素的ID相同。
以下是该示例的JSFiddle:
答案 2 :(得分:0)
没有jQuery,这种事情并不难。
我建议对Javascript激活的链接使用hash-bang(#!)将其与其他可能的哈希链接分开。 (脚本在底部)
<div id="nav-links">
<a href="#!b0">
<div id="text_content"> link2 </div>
</a>
<a href="#!b1">
<div id="text_content"> link 1 </div>
</a>
</div>
<div class='box' id='b0'> abstract content </div>
<div class='box' id='b1'> introduction content </div>
<script type="text/javascript">
var links = document.getElementById('nav-links').getElementsByTagName('a');
for(var i = 0, link; link = links[i]; i++) {
link.onclick = showContent;
// Hide content divs by default
getContentDiv(link).style.display = 'none';
}
// Show the first content div
if(links.length > 0) showContent.apply(links[0]);
var current;
function showContent() {
// hide old content
if(current) current.style.display = 'none';
current = getContentDiv(this);
if(!current) return true;
//current.innerHTML = "This is where the xml variable content should go";
current.style.display = 'block';
return true;
}
function getContentDiv(link) {
var linkTo = link.getAttribute('href');
// Make sure the link is meant to go to a div
if(linkTo.substring(0, 2) != '#!') return;
linkTo = linkTo.substring(2);
return document.getElementById(linkTo);
}
</script>