gpt4 book ai didi

javascript - 尝试根据选择显示不同的 HTML 段落

转载 作者:行者123 更新时间:2023-11-28 16:50:45 28 4
gpt4 key购买 nike

所以我有这个模式,它应该提供不同的描述性段落,具体取决于用户从下拉列表中做出的选择。目前它只始终显示所有段落。我希望它在选择“公共(public)”时显示“隐藏”,在选择“内部”时显示“隐藏2”。等等等等

<html> 
<head>
<script type="text/javascript">

function CheckSelect(val){
var PUBLIC=document.getElementById('Hide');
var INTERNAL=document.getElementById('Hide2');
var CONFIDENTIAL=document.getElementById('Hide3');
var SECRET=document.getElementById('Hide4');

if(val=='PUBLIC')
PUBLIC.style.display='block';
else if (val=='INTERNAL')
INTERNAL.style.display='block';
else if (val=='CONFIDENTIAL')
CONFIDENTIAL.style.display='block';
else if (val=='SECRET')
SECRET.style.display='block';
else
PUBLIC.style.display='none';

}

</script>
</head>
<body>
<select id="selectDocumentType" name="documentClass" onchange='CheckSelect(this.value);'>
<option value="Choose">Choose a classification!</option>
<option value="PUBLIC">Public</option>
<option value="INTERNAL">Internal</option>
<option value="CONFIDENTIAL">Confidential</option>
<option value="SECRET">Secret</option>
</select>
<p align="justify" style="font-family:helvetica,garamond,serif;font-size:12px;font-style:regular;" class="light"
id="Hide" style='display:none;'>Wizard Is working</p>
<p align="justify" style="font-family:helvetica,garamond,serif;font-size:12px;font-style:regular;" class="light"
id="Hide2" style='display:none;'>Wizard Is Twerking</p>
<p align="justify" style="font-family:helvetica,garamond,serif;font-size:12px;font-style:regular;" class="light"
id="Hide3" style='display:none;'>Wizard Is Laughing</p>
<p align="justify" style="font-family:helvetica,garamond,serif;font-size:12px;font-style:regular;" class="light"
id="Hide4" style='display:none;'>Wizard Is Eating</p>
</body>

最佳答案

您的代码缺少“如果选择了适当的值,则不隐藏,否则隐藏”的逻辑;即您的if说法不正确。

话虽如此,最好将其替换为 classList.toggle('show', <predicate>为了避免重复(4 次)本质上相同的 if/else 语句。

您的代码在可读性和最佳实践方面还存在许多其他问题。我不会一一列举,但以下是您应该追求的目标。

const $ = document.querySelector.bind(document);

$('#selectDocumentType').addEventListener('change', () => {
[
['public', 'hide'],
['internal', 'hide2'],
['confidential', 'hide3'],
['secret', 'hide4'],
].forEach(([value, elId]) => $(`#${elId}`).classList.toggle('show', value === $('#selectDocumentType').value));
});
p.light {
font-family: helvetica, garamond, serif;
font-size: 12px;
font-style: normal;
display: none;
}

p.show {
display: block;
}
<select id="selectDocumentType" name="documentClass">
<option value="Choose">Choose a classification!</option>
<option value="public">Public</option>
<option value="internal">Internal</option>
<option value="confidential">Confidential</option>
<option value="secret">Secret</option>
</select>
<p class="light hidden" id="hide">Wizard Is working</p>
<p class="light hidden" id="hide2">Wizard Is Twerking</p>
<p class="light hidden" id="hide3">Wizard Is Laughing</p>
<p class="light hidden" id="hide4">Wizard Is Eating</p>

编辑、清洁代码实践:

1) 使用document.querySelector而不是document.getElementById因为它更通用。它通常绑定(bind)到 $减少打字。

2) 使用let & const而不是var声明变量。仅对 const 使用大写变量名s 和小写字母表示非 const s。

3) 使用switch陈述而不是重复 if/else比较相同变量是否相等。

4) 使用===而不是== .

5) 正确设置代码格式。例如,缩进和运算符周围的空格。

6) 更喜欢箭头函数 () => {}而不是 function关键字。

7) 使用 element.addEventListener('event')在 JS 中而不是 onevent在 HTML 中。

8) 不要将 HTML 值大写(例如 ID、类等)。使用破折号大小写,例如id="min-value-input" .

9) 没有align <p> 的属性标签。

10) 不要使用 style HTML 中的属性。同样,不要设置 style JS 中的属性。相反,请使用 class HTML 中的属性,以及 element.classList.add|remove|toggle在 JS 中。

11) regular不是有效的 CSS font-style值(value)。您可能的意思是 normal .

关于javascript - 尝试根据选择显示不同的 HTML 段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991014/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com