gpt4 book ai didi

javascript - 显示 DIV 元素之一,具体取决于用户输入值

转载 作者:行者123 更新时间:2023-11-28 03:07:28 26 4
gpt4 key购买 nike

我很挣扎......

我有一个<input> field 。根据输入,各种 <div> 之一应显示元素。在此示例中,它只是一个文本(例如“Dein Plan enthält weniger als 1500 kcal!”),稍后 div 元素将是带有图片、按钮等的整个 block 。

我发现了一些关于 jQuery 的想法,但由于我从未使用过它,所以我不理解它。所以我尝试使用 if 函数并更改 style:none 来阻止。

我做错了什么? div 不想出现...我是 Javascript 的初学者,所以如果您有任何提示,请为绝对的菜鸟解释一下:)

谢谢大家!

HTML

<body style="background-color:#000000">

<form>
<p>
<label for=bedarf> Mein Bedarf </label>
<input type="bedarf" name="bedarf" id="bedarf" placeholder="2345">
<button class="button1" type="button" id="berechnen" onclick="planholen()" > Plan anzeigen </button><br><br><br>
</form>

<div class="anzeige" id="erster" ><p>Dein Plan enthält weniger als 1500 kcal!</p></div>
<div class="anzeige" id="zweiter" ><p>Dein Plan enthält weniger als 1700 kcal!</p></div>
<div class="anzeige" id="dritter" ><p>Dein Plan enthält weniger als 1900 kcal!</p></div>
<div class="anzeige" id="vierter" ><p>Dein Plan enthält weniger als 2100 kcal!</p></div>
<div class="anzeige" id="funfter" ><p>Dein Plan enthält weniger als 2300 kcal!</p></div>
<div class="anzeige" id="sechster" ><p>Dein Plan enthält weniger als 2500 kcal!</p></div>
<div class="anzeige" id="siebter" ><p>Dein Plan enthält weniger als 2700 kcal!</p></div>
<div class="anzeige" id="achter" ><p>Dein Plan enthält weniger als 2900 kcal!</p></div>
<div class="anzeige" id="neunter" ><p>Dein Plan enthält weniger als 3100 kcal!</p></div>
<div class="anzeige" id="zehnter" ><p>Dein Plan enthält weniger als 3300 kcal!</p></div>
<div class="anzeige" id="elfter" ><p>Dein Plan enthält weniger als 3500 kcal!</p></div>
<div class="anzeige" id="zwölfter" ><p>Dein Plan enthält weniger als 3700 kcal!</p></div>
<div class="anzeige" id="dreizehnter" ><p>Dein Plan enthält weniger als 3900 kcal!</p></div>

</body>

CSS

<style>

label {
width: 100px;
display: inline-block;
font-family: Arial;
color: #ffffff;
}

input {
width: 120px;
height: 25px;
text-align: center;
font-family: Arial;
font-size: 14px
}


.button1 {
width:130px;
height:25px;
position: absolute;
left: 250px;
top: 4px;
}

button {
background-color: #ddca07; /* Green */
border: none;
color: white;
height:30px;
width:50px;
padding: 2px 10px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 20px;
margin: 4px 2px;
-webkit-transition-duration: 0.4s; /* Safari */
transition-duration: 0.4s;
cursor: pointer;
}

button {
background-color: black;
color: white;
border: 1px solid #ddca07;
width:140px;
height:25px;
font-size: 16px;
font-style:bold;
}

button:hover {
background-color: #ddca07;
color: black;
}

.anzeige {
font-family:Arial;
color:#ffffff;
display:none;
}

</style>

JS

<script>

function planholen() {
var a = document.getElementById("erster");
var b = document.getElementById("zweiter");
var c = document.getElementById("dritter");
var d = document.getElementById("vierter");
var e = document.getElementById("funfter");
var f = document.getElementById("sechster");
var g = document.getElementById("siebter");
var h = document.getElementById("achter");
var i = document.getElementById("neunter");
var j = document.getElementById("zehnter");
var k = document.getElementById("elfter");
var l = document.getElementById("zwölfter");
var m = document.getElementById("dreizehnter");

var val = parseInt(document.getElementById("bedarf");

if (val < 1500) { a.style.display = "block"; } else
if (val < 1700) { b.style.display = "block"; } else
if (val < 1900) { c.style.display = "block"; } else
if (val < 2100) { d.style.display = "block"; } else
if (val < 2300) { e.style.display = "block"; } else
if (val < 2500) { f.style.display = "block"; } else
if (val < 2700) { g.style.display = "block"; } else
if (val < 2900) { h.style.display = "block"; } else
if (val < 3100) { i.style.display = "block"; } else
if (val < 3300) { j.style.display = "block"; } else
if (val < 3500) { k.style.display = "block"; } else
if (val < 3700) { l.style.display = "block"; } else
if (val < 3900) { m.style.display = "block"; }


</script>

最佳答案

我已经添加了可以在下面运行的版本。看看你是否能理解这一切。不要灰心,我知道一开始可能会感到不知所措,但很快就会再次变得有趣:)

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Your diet-Plan</title>
<style type="text/css">
form {
margin-bottom: 2rem;
}

label {
width: 100px;
display: inline-block;
font-family: Arial;
color: #fff;
}

input {
width: 120px;
height: 25px;
text-align: center;
font-family: Arial;
font-size: 14px;
}

.button1 {
width: 130px;
height: 25px;
position: absolute;
left: 250px;
top: 4px;
}

button {
background-color: #ddca07; /* Green */
border: none;
color: white;
height: 30px;
width: 50px;
padding: 2px 10px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 20px;
margin: 4px 2px;
-webkit-transition-duration: 0.4s; /* Safari */
transition-duration: 0.4s;
cursor: pointer;
}

button {
background-color: black;
color: white;
border: 1px solid #ddca07;
width: 140px;
height: 25px;
font-size: 16px;
font-style: bold;
}

button:hover {
background-color: #ddca07;
color: black;
}

.anzeige {
font-family: Arial;
color: #fff;
}

.anzeige:empty {
display: none;
}
</style>
</head>
<body style="background-color:#000000">
<form id="diat">
<label for=bedarf>Mein Bedarf</label>
<input type="text" name="bedarf" id="bedarf" placeholder="2345">
<button class="button1" type="submit">Plan anzeigen</button>
</form>
<div class="anzeige" id="anzeige"></div>

<script>
function planholen( event ) {
event.preventDefault();
var bedarf = parseInt( document.getElementById('bedarf').value ) || 0;
var bedarfGerundet = Math.ceil( bedarf / 100 ) * 100;
var anzeige = document.getElementById('anzeige');
if( bedarf > 0 ) {
anzeige.innerHTML = 'Dein Plan enthält weniger als ' + bedarfGerundet + ' kcal!';
}
else {
anzeige.innerHTML = '';
}
}

document.getElementById('diat').addEventListener('submit', planholen);
</script>
</body>
</html>

我尽可能地遵守您的规范,但确实在这里和那里添加了一些东西。

  1. 我添加了.anzeige:empty { display: none; }在你的CSS中,这样你就不必处理这个逻辑了。现在只需清空 div,它就会被隐藏。
  2. 我将原始输入数据保留为 bedarf以确保我们稍后可以再次访问此内容
  3. 我假设您想在未插入任何内容时清空 div
  4. 我现在通过 js 插入文本,而不是已经将其放入 DOM 中(小得多)
  5. 现在,我不再在单击时执行我的函数,而是在提交时执行它,这意味着当有人点击 return 时关键它仍然有效(更多a11y)
  6. 由于我有限的德语技能,我在那里保留了尽可能多的德语:)

您的代码有一些问题:

  1. var val = parseInt(document.getElementById("bedarf");缺少右括号
  2. 如果有人输入某些内容并点击您的按钮,然后改变主意并输入新按钮并再次点击该按钮,他们会收到几条消息,我认为这不是意图
  3. 前述submit on return问题
  4. if (val < 1500) { a.style.display = "block"; } else无论如何,对我来说很难阅读...尝试为 else if 使用新行声明

希望这有帮助

关于javascript - 显示 DIV 元素之一,具体取决于用户输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60473781/

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