javascript - Javascript 按钮按条件显示
问题描述
我试图使按钮仅在显示表格时才可见,但它似乎不起作用,按钮没有隐藏。
PS:抱歉没有澄清,我的 javascript 运行 onload
HTML:
var DLFunc = document.getElementsByTagName("table");
var DLButtons = document.getElementById("tableToCsv");
if (DLFunc == "") {
DLButtons.style.visibility = 'hidden';
} else if (DLFunc != "") {
DLButtons.style.visibility = 'visible';
}
<div id="view-container">
<main ng-view></main>
</div>
<div id="tableToCsv">
<button class="btnCSV">CSV file</button>
</div>
完整的 HTML:
<body ng-controller="DataController">
<header ng-include="'FixedPages/header.html'"></header>
<div ng-include="'FixedPages/mapAHH.html'"></div>
<div id="view-container">
<main ng-view></main>
</div>
<div id="tableToCsv">
<button class="btnCSV">CSV file</button>
</div>
<footer ng-include="'FixedPages/footer.html'"></footer>
<script src="js\DownloadCSV.js"></script>
</body>
解决方案
通过计算表格标签的数量来检查是否有表格显示。不是检查空字符串,而是检查数组的长度:
var DLFunc = document.getElementsByTagName("table");
var DLButtons = document.getElementById("tableToCsv");
if (DLFunc.length == 0) {
DLButtons.style.visibility = 'hidden';
} else {
DLButtons.style.visibility = 'visible';
}
还要检查代码何时运行(可能添加警报),因为在您的 JS 运行时可能尚未创建表。
更新:
您的 JS 在页面加载时不会拾取表格,而 AngularJS 可能稍后会创建元素。
您可以在 DLButtons HTML 中添加如下内容:
<button class="btnCSV" *ngShow="hasTable()">CSV file</button>
然后在你的 Angular Component.ts/js 中:
hasTable() {
return document.getElementsByTagName("table").length > 0;
}
推荐阅读
- javascript - 如何只围绕它的中点旋转一条线?
- python - 为什么迭代器和生成器是可散列的?
- javascript - 使用 PDF.js 时 .pdf 的离线可用性
- typescript - 如何解决 TypeScript 中 Object is possible is 'null'.ts(2531) 错误?
- python - 如何从数据框组的第一个值创建增量 var?
- android - 片段事务后单击时 EditText 消失
- javascript - 可重复使用的网页元素
- mysql - 计算2(非连续)行之间的时间差
- css - 模块大小的 CSS(类似于@media)?
- c# - 如何为 Unity 中由 OnTriggerEnter 触发的 GameObject 分配新的 transform.position?