【发布时间】:2012-04-02 22:26:54
【问题描述】:
我有这个功能,可以将 HTML 内容从页面上的一个元素切换到另一个元素。我遇到的问题是,在运行此函数的第一次迭代时,它会保留原始 HTML 值。我认为下面的代码会简单地覆盖当前内容。首先我错了吗?
其次,我使用 Ajax 来调用内容。这可能是 DOM 看不到变化的原因吗?
这是我的代码:
function subNavContent ( ) {
//If ID is the reference.
//navContent = document.getElementByID('pageNav').innerHTML;
navContent = document.getElementsByClassName('pageNav')[0].innerHTML;
document.getElementById('subNav').innerHTML = navContent;
return;}
我调用的要切换的 HTML 元素:
<nav id="subNav" class="aniSubNavOpen drop-shadow lifted">
</nav>
<div class="pageNav">
<h1 data-title="Welcome to The Mind Company">
<a>Welcome to The Mind Company</a></h1>
</div>
Ajax 调用(以及其他为了完整起见的东西。)
function subNavContent ( ) {
navContent = document.getElementsByClassName('pageNav')[0].innerHTML;
document.getElementById('subNav').innerHTML = navContent;}
function subNavLoader ( ) {
var subNav = document.getElementById( 'subNav' );
var tmp = '';
if (subNav.className === 'aniSubNavClose' ) {
tmp = 'aniSubNavOpen'; }
else {
tmp = 'aniSubNavClose';}
subNav.className = tmp;
return;}
function sectionAssure( classID, type ) {
subNavLoader ( );
setTimeout( function ( ) {
var tmp = '';
var sel = document.getElementsByTagName('section');
for (var i=0; i<sel.length; i++){
if (sel[i].id == classID) { tmp = 'block' } else { tmp = 'none' }
sel[i].style.display = tmp; }
subNavLoader ( ); }, ( 1500 ) ); }
function loadContent ( classID, url, type ) {
var xmlhttp;
if ( window.XMLHttpRequest ) {
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
document.getElementById( classID ).innerHTML=xmlhttp.responseText;}};
xmlhttp.open( "GET", url, true );
xmlhttp.send( );
subNavContent ( );}
return; }
【问题讨论】:
-
在您的示例中,您没有具有 pageNav 类的元素,并且您有两个 ID 为 subNav 的元素。
标签: javascript innerhtml