【发布时间】:2020-09-11 05:23:22
【问题描述】:
我正在尝试创建一个动态导航栏,当用户登录与未登录时会有所不同。
我的身份验证部分正常工作(通过控制台日志确认);但是,由于某种原因,当我使用.innerHTML = ... 时,HTML 没有得到更新。更新后,我正在控制台记录 innerHTML,它在日志中显示正确,但导航栏未按应有的方式显示。
HTML:
...
<ul class="site-menu main-menu js-clone-nav mr-auto d-none d-lg-block">
<li><a href="#" class="nav-link"><strong>Home</strong></a></li>
<li id ="nav-listings">
<a href="Search.html" class="nav-link"><strong>Listings</strong></a>
</li>
<li><a href="#contact-section" class="nav-link"><strong>Contact</strong></a></li>
<li class="has-children" id="nav-account">
<a href="Signin.html" class="nav-link"><strong>Sign-In</strong></a>
<div id="navDropdown" class="dropdown">
<a href="User.html">Profile</a>
<a href="Signup.html">Sign-Up</a>
</div>
</li>
</ul>
...
js代码:
AOS.init({
duration: 800,
easing: 'slide',
once: true
});
jQuery(document).ready(function($) {
"use strict";
$(".loader").delay(1000).fadeOut("slow");
$("#overlayer").delay(1000).fadeOut("slow");
...
firebase.auth().onAuthStateChanged(firebaseUser => {
if (firebaseUser) {
var username = firebaseUser.email;
console.log(`${firebaseUser ? `- User signed in: ${firebaseUser.email} => ${username}` : "No User Signed in"}`);
document.getElementById("nav-listings").className = "has-children";
document.getElementById("nav-listings").innerHTML = "<a href='Search.html' class='nav-link'><strong>Listings</strong></a>" +
"<div id='listDropdown' class='dropdown'>" +
"<a href='AddHouse.html'>Add Listing</a>" +
"<a href='User.html'>Favorites</a>" +
"</div>";
console.log(document.getElementById("nav-listings").innerHTML);
} else {
btnLogin.disabled = false;
}
});
});
编辑: 它以导航栏的压缩形式出现,但主要导航栏??? 请参阅Here 获取完整代码(减去 CSS ......这使得问题很难看到,但所有的 js 和 HTML 都在那里)。
【问题讨论】:
-
提供codepen示例,快速调试
-
您的页面上有多少个 id="nav-listings" 的元素?您正在使用 jquery ,那么为什么不使用
$("#nav-listings").html('My HTML here');呢? -
对我来说似乎工作正常,尽管您尝试选择的元素的 id 中的空格确实不正确。
id ="nav-listings"应该是id="nav-listings"。这可能会搞砸你。 -
@angel.bonev 只有一个元素具有该 ID。我也试过了,但没有运气。
-
@MrKhan link 没有 CSS 但在这里
标签: javascript html firebase innerhtml