如何用JavaScript或jQuery替换一堆标签
How to replace bunch of tags with JavaScript or jQuery?
我在这个标签中有一个"aside"标签,我有一个类似于侧菜单的"div"。我希望这个菜单只在用户登录时显示。如果他没有登录,我希望有一个登录表单,而不是菜单。我知道如何通过JavaScript检查php会话是否已创建,但我不知道如何用其他代码替换所有代码。这是一个代码:
<aside id="main_section_right">
<div id="side_menu_div">
<ul id="account_menu">
<li class="current"><a href="#">Account</a></li>
<li><a href="#">Edit Account</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Help</a></li>
<li><a href="#">Log Out</a></li>
</ul>
</div>
</aside>
现在,若用户并没有登录,我希望"ul"标记中的代码改为这个。
<form>
<li><input type="text" class="form" id="username" name="usr"/></li>
<li><input type="text" class="form" id="password" name="paw"/></li>
<li>
<button type="submit" class="login_button" id="login_button">
<b>Login</b>
</button>
</li>
</form>
有什么方法可以用jQuery或JavaScript实现它吗?所以这一切看起来像这样:
<script type="text/javascript">
if (logged_in) {
document.getElementById("side_menu_div").innerHTML =
} else {
document.getElementById("side_menu_div").innerHTML =
}
</script>
但只有当我更改文本而不是替换标签时,这才有效。谢谢你的帮助。
另一个想法可能是将#side_menu_div
中的两个元素组合起来,并根据登录状态切换它们的可见性。看到这个jsfiddle
<div id="side_menu_div">
<div id="loggedin">
<ul id="account_menu">
<li class="current"><a href="#">Account</a></li>
<li><a href="#">Edit Account</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Help</a></li>
<li><a href="#">Log Out</a></li>
</ul>
</div>
<div id="notloggedid" class="chklogin">
<form>
<ul>
<li><input type="text" class="form" id="username" name="usr"/></li>
<li><input type="text" class="form" id="password" name="paw"/></li>
<li><button type="submit" class="login_button" id="login_button">
<b>Login</b></button></li>
</ul>
</form>
</div>
</div>
切换显示的功能:
function _setMenu(loginstatus){
if (loginstatus){
$('#loggedin').show();
$('#notloggedin').hide();
} else {
$('#loggedin').hide();
$('#notloggedin').show();
}
}
您也可以将菜单放在一个文件中,例如menu.html,并将表单放在另一个文件form.html.中
var isLogged; // This variable shoud be a boolean indicating if the user is logged
if (isLogged) $("#main_section_right").load("menu.html");
else $("#main_section_right").load("form.html");
顺便说一句,您可以对ULelment执行同样的操作,而不是整个aside元素,但更改aside更好,因为如果不更改,您的id(例如*#side_enu_div*)将不是一个很好的参考。
相关文章:
- 如何用JavaScript或jQuery替换一堆标签
- JavaScript-传单,添加了一堆标记
- 如何使用Gulp编译并移动到另一个文件夹一堆sass文件
- 有没有更好的方法以一定的顺序执行一堆部分异步的jQuery函数
- 使用一堆 setTimeouts 还是一个 setInterval 来刷新一堆对象更有效
- 用 JavaScript 加一堆浮点数,总和上的误差界限是多少
- 如何防止/延迟一堆 Bootstrap 模块立即加载其内容以防止站点加载时间缓慢
- 将某些内容与一堆斜杠匹配的正确方法
- 使用 setInterval 运行一堆 ajax 好吗?超过 5 个 AJAX 正在运行
- 可以调用 document.querySelector( ) 一堆
- 在超大的jquery中,如何使用java动态传递一堆图像
- 在木偶布局中维护一堆木偶项目视图
- 从数组中按顺序执行一堆 WinJS 承诺
- jquery/js - 我有一堆值(字符串).我想通过 POST 将其发送到另一个 URL,我该怎么做
- 在提交之前将一堆复选框输入附加到表单,然后隐藏它们
- 如何按顺序调用一堆包含 ajax 的函数
- 不断出现逻辑错误,将我的数组输出减少到一堆零
- 如何从一堆视图中删除一个类
- 如何使用prototype js在HTML中添加一堆选项来选择标签
- 用jquery包装一堆不同的html标签