目前,使用链接访问该页面,例如help.html?show=charInPw
。
该表以下列方式编写:
<table>
...
<tbody class="table-body">
<tr class="pwLen"><td colspan="5" class="subheading">Password Length</td></tr>
<tr class="pwLen"><td class="first">Minimum length</td><td>Y</td><td> </td><td>Y</td><td>Y</td></tr>
<tr class="pwLen"><td class="first">Maximum length</td><td>Y</td><td> </td><td>Y</td><td>Y</td></tr>
<tr class="charInPw"><td colspan="5" class="subheading">Characters in Password</td></tr>
<tr class="charInPw"><td class="first">Minimum numeric characters</td><td>Y</td><td> </td><td>Y</td><td>Y</td></tr>
<tr class="charInPw"><td class="first">Minimum alphabetic characters</td><td>Y</td><td> </td><td>Y</td><td>Y</td></tr>
...
CSS如下:
table tbody tr{
text-align: center;
display: none;
}
(在tr
中也有thead
s,默认情况下它们总是显示。)
然后我有一些Javascript代码如下(jQuery不是一个选项):
<script>
var url = new URL(window.location.href);
var c = url.searchParams.get("show");
for (i = 0; i < document.getElementsByClassName(c); i++)
document.getElementsByClassName(c)[i].style.display='table-row';
</script>
但是我无法显示我的行。
我应该如何更改页面上的代码以仅显示show
参数引用的行?
编辑#1:作为测试,我做了以下硬编码,但它也没有用!
<script>
var url = new URL(window.location.href);
var c = url.searchParams.get("show");
var trs = document.getElementsByClassName('pwLen');
for (i = 0; i < trs.length; i++)
trs[i].style.display='table-row';
</script>
编辑#2:我将以下两种解决方案合二为一 - 请参阅https://jsfiddle.net/tea45p2o/。显示的演示输出是我想要的,但是当我保存文件并在浏览器中打开页面时,我无法看到。到底是怎么回事?
在BJohn和MrJ的大力帮助下,我提出了如下解决方案:
<script>
function show() {
var url = new URL(window.location.href);
var c = '.' + url.searchParams.get("show");
for (let el of document.querySelectorAll(c)) el.style.display = 'table-row';
}
</script>
然后,我改变了我的<body>
<body onLoad="show();">
使用以下代码:
for (let el of document.querySelectorAll(c)) el.style.display = 'table-row';
您还需要在URL中附加带有类名的点(。)。
你错过了放置.length
for (i = 0; i < document.getElementsByClassName(c)
.length; i++)
但我认为这样会更具可读性
for(let TR_x of [... document.getElementsByClassName(c) ]) {
TR_x.style.display='table-row';
}
但我绝对喜欢
document.querySelectorAll('.'+c).forEach(trX=>{ trX.style.display='table-row' })