对如何删除 HTML 下拉项元素感到困惑
confusion on how to remove an HTML dropdown item element
我正在尝试根据网页上的用户登录状态创建动态菜单。这是 HTML 页面 (Bootstrap 4) 上的代码:
<div class="dropdown" id="account_info">
<button type="button" class="btn btn-elegant" id="dropdownMenuButton" data-toggle="dropdown"><i class="icon-user-circle"></i> User</button>
<div class="dropdown-menu" id="drop_down">
</div>
</div>
以及创建“登录”的代码 link 或如果用户已经 'signed in' 则删除 link:
var _status = vitals.dataset.user; //retrieve passed 'cookie' information...
var _log_status = sessionStorage.getItem("logged");
if (_status != "none") {
if ((_log_status === null) || (_log_status === "undefined")) {
elem = document.getElementById("account_in");
elem.parentNode.removeChild(elem); //remove 'login' item
sessionStorage.setItem("logged", "login");
} //user has 'signed in' for the initial time...
} else {
elem_set = document.createElement("a");
elem_set.className = "drop-down-item";
elem_set.id = "account_in";
elem_set.appendChild(document.createTextNode("Login"));
document.getElementById("drop_down").appendChild(elem_set);
} //"user" cookie has passed...OR NOT...
如果用户不是 'signed in',在下拉菜单中创建“登录”link 的代码工作正常(在 'else' 语句中)。但是,当用户 'signed in' 时会抛出错误。错误是“Uncaught TypeError: Cannot read 属性 'parentNode' of null”在读取“elem.parentNode.removeChild(elem)”的行中。
我不明白为什么“account_in”的 ID 报告为 'null',因为我创建了该元素属性...或者此错误是否指的是其他内容?非常感谢任何建议。
我在下面创建了一个代码片段,这样我就可以 运行 你的代码了。我没有 vitals 库,所以我将其注释掉并只使用了一个静态值。另外这不会让我使用 sessionStorage 所以我再次使用静态值。
比较 _log_status === "undefined"
时出错 - 我很确定你的意思是 typeof _log_status === "undefined"
我还添加了我在评论中描述的 if 语句。
如果这仍然不是您所需要的,请在上面的问题中添加一个 运行nable 片段。
var _status = 'Pangit'; //vitals.dataset.user; //retrieve passed 'cookie' information...
var _log_status; //sessionStorage.getItem("logged");
if (_status != "none") {
if ((_log_status === null) || (typeof _log_status === "undefined")) {
elem = document.getElementById("account_in");
// if _status != none and _log_status is undefined, elem will not exist
if (elem) {
elem.parentNode.removeChild(elem); //remove 'login' item
}
//sessionStorage.setItem("logged", "login");
} //user has 'signed in' for the initial time...
} else {
elem_set = document.createElement("a");
elem_set.className = "drop-down-item";
elem_set.id = "account_in";
elem_set.appendChild(document.createTextNode("Login"));
document.getElementById("drop_down").appendChild(elem_set);
} //"user" cookie has passed...OR NOT...
<div class="dropdown" id="account_info">
<button type="button" class="btn btn-elegant" id="dropdownMenuButton" data-toggle="dropdown"><i class="icon-user-circle"></i> User</button>
<div class="dropdown-menu" id="drop_down">
</div>
</div>
我正在尝试根据网页上的用户登录状态创建动态菜单。这是 HTML 页面 (Bootstrap 4) 上的代码:
<div class="dropdown" id="account_info">
<button type="button" class="btn btn-elegant" id="dropdownMenuButton" data-toggle="dropdown"><i class="icon-user-circle"></i> User</button>
<div class="dropdown-menu" id="drop_down">
</div>
</div>
以及创建“登录”的代码 link 或如果用户已经 'signed in' 则删除 link:
var _status = vitals.dataset.user; //retrieve passed 'cookie' information...
var _log_status = sessionStorage.getItem("logged");
if (_status != "none") {
if ((_log_status === null) || (_log_status === "undefined")) {
elem = document.getElementById("account_in");
elem.parentNode.removeChild(elem); //remove 'login' item
sessionStorage.setItem("logged", "login");
} //user has 'signed in' for the initial time...
} else {
elem_set = document.createElement("a");
elem_set.className = "drop-down-item";
elem_set.id = "account_in";
elem_set.appendChild(document.createTextNode("Login"));
document.getElementById("drop_down").appendChild(elem_set);
} //"user" cookie has passed...OR NOT...
如果用户不是 'signed in',在下拉菜单中创建“登录”link 的代码工作正常(在 'else' 语句中)。但是,当用户 'signed in' 时会抛出错误。错误是“Uncaught TypeError: Cannot read 属性 'parentNode' of null”在读取“elem.parentNode.removeChild(elem)”的行中。
我不明白为什么“account_in”的 ID 报告为 'null',因为我创建了该元素属性...或者此错误是否指的是其他内容?非常感谢任何建议。
我在下面创建了一个代码片段,这样我就可以 运行 你的代码了。我没有 vitals 库,所以我将其注释掉并只使用了一个静态值。另外这不会让我使用 sessionStorage 所以我再次使用静态值。
比较 _log_status === "undefined"
时出错 - 我很确定你的意思是 typeof _log_status === "undefined"
我还添加了我在评论中描述的 if 语句。
如果这仍然不是您所需要的,请在上面的问题中添加一个 运行nable 片段。
var _status = 'Pangit'; //vitals.dataset.user; //retrieve passed 'cookie' information...
var _log_status; //sessionStorage.getItem("logged");
if (_status != "none") {
if ((_log_status === null) || (typeof _log_status === "undefined")) {
elem = document.getElementById("account_in");
// if _status != none and _log_status is undefined, elem will not exist
if (elem) {
elem.parentNode.removeChild(elem); //remove 'login' item
}
//sessionStorage.setItem("logged", "login");
} //user has 'signed in' for the initial time...
} else {
elem_set = document.createElement("a");
elem_set.className = "drop-down-item";
elem_set.id = "account_in";
elem_set.appendChild(document.createTextNode("Login"));
document.getElementById("drop_down").appendChild(elem_set);
} //"user" cookie has passed...OR NOT...
<div class="dropdown" id="account_info">
<button type="button" class="btn btn-elegant" id="dropdownMenuButton" data-toggle="dropdown"><i class="icon-user-circle"></i> User</button>
<div class="dropdown-menu" id="drop_down">
</div>
</div>