我的网页上有一个HTML块。我希望能够根据Javascript变量打开和关闭它。
我已经尝试在Javascript代码(HTML内部)中添加HTML字符串,但这是一个足够大的块,我不禁想到有更好的方法。
我真正想做的是(在伪代码中):
if (adminLevel === 200) {
<enable a block of code that include a number of tables and forms in HTML>
}
或者在代码中,例如:
<Title>Test</title>
<h2>Some Stuff here</h2>
<!-- Admin Stuff -->
<a href="Slowdown.html">Click here to slow down</a>
<a href="speed up.html">Click here to speed up</a>
<table><tr><td>Status</td></tr><tr><td>Running</td></tr></table>
<!-- End admin stuff -->
</body>
</html>
<script>
if (adminLevel === 200) { ** enable block ** }
</script>
几年前我觉得我做的是这样的ASP,但今天我正在使用Javascript。
有任何想法吗?
要添加到Andrew关于向该部分添加ID的注释,您还应该将您的HTML块包装在<div>
标记中并将ID放在其上,而不是单独的部分。
HTML:
<!-- Admin Stuff -->
<div id="example-id">
<a href="Slowdown.html">Click here to slow down</a>
<a href="speed up.html">Click here to speed up</a>
<table><tr><td>Status</td></tr><tr><td>Running</td></tr></table>
</div>
<!-- End admin stuff -->
并为JavaScript:
if (adminLevel == 200) {
document.getElementById('example-id').style.display = 'block'
}
else{
document.getElementById('example-id').style.display = 'none'
}
这样你就可以用JavaScript中的一行隐藏整个块,而不必隐藏每个单独的块。
编辑:另外,正如其他人所说,这不是一种非常安全的处理管理员访问的方法。您可能应该使用您正在使用的任何服务器端语言(ASP / JSP / PHP /等)而不是JavaScript来处理此问题。
例如,为HTML元素提供ID
<div id="test" style="display:none">
<script>
if (adminLevel == 200) {
document.getElementById('test')style.display = 'block'
}
else{
document.getElementById('test')style.display = 'none'
}
</script>
如果我理解你的问题,我想你想显示/隐藏一个基于js变量的html代码块你可以为此jquery。在html中给该div一个类因此,只要文档准备好,你就可以用$(“。class_name”)隐藏它.hide();并显示使用if(condition){$(“。class_name”)。show();}
var adminLevel = 200;
if (adminLevel === 200) {
document.getElementById("admin-block").style.display = "block";
}
#admin-block {
display:none
}
<!doctype html>
<html>
<head>
<Title>Test</title>
</head>
<body>
<h2>Some Stuff here</h2>
<div id="admin-block">
<!-- Admin Stuff -->
<a href="Slowdown.html">Click here to slow down</a>
<a href="speed up.html">Click here to speed up</a>
<table><tr><td>Status</td></tr><tr><td>Running</td></tr></table>
<!-- End admin stuff -->
</div>
</body>
</html>
如果adminLeve = 200
,这可以显示阻止,但你不应该在javascript中做后端事情。用户可以访问javascript,所以每个人都可以访问你的代码块。
如果要检查用户是否为admin,请使用服务器端脚本语言(例如PHP)执行此操作。在那里你应该检查用户的角色,如果是admin,那么你可以为管理员呈现内容。
你可以使用knockout我重写你的例子
// simulation result
var adminLevel = 200
var ViewModel = function() {
this.AdminLevel = ko.observable();
};
var model = new ViewModel()
ko.applyBindings(model);
model.AdminLevel(adminLevel)
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<h2>Some Stuff here</h2>
<!-- Admin Stuff -->
<!-- ko if: AdminLevel() === 200 -->
<a href="Slowdown.html">Click here to slow down</a>
<a href="speed up.html">Click here to speed up</a>
<table><tr><td>Status</td></tr><tr><td>Running</td></tr></table>
<!-- /ko -->
<!-- End admin stuff -->