使用Javascript控制HTML块

问题描述 投票:0回答:5

我的网页上有一个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。

有任何想法吗?

javascript html
5个回答
0
投票

要添加到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来处理此问题。


0
投票

例如,为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>

0
投票

如果我理解你的问题,我想你想显示/隐藏一个基于js变量的html代码块你可以为此jquery。在html中给该div一个类因此,只要文档准备好,你就可以用$(“。class_name”)隐藏它.hide();并显示使用if(condition){$(“。class_name”)。show();}


0
投票

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,那么你可以为管理员呈现内容。


0
投票

你可以使用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 -->
© www.soinside.com 2019 - 2024. All rights reserved.