【问题标题】:The Input number do not select a card输入号码不选卡
【发布时间】:2023-03-14 12:05:01
【问题描述】:

所以我正在构建这副卡片,但是当我在 HTML 的文本区域中键入 af 数字时,它不会从数组“hjerter”返回卡片 应该从已经输入到 HTML 文本区域的数字中选择,然后在 HTML 页面上显示给定的卡片。

function visKort() {
  var x = document.getElementById("Nr").value;
  var hjerter = ['h-ace', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9', 'h10', 'h-jack', 'h-queen', 'h-king'];

  var kort = "";
  var i;
  for (i = 0; i < hjerter.length; i++) {
    if (x == hjerter[i]) {

    } else if (i > 0) {
      break;
    }
    kort += "Nr " + x + "<br>" + "Dit kort er " + hjerter[i];
  }
  document.getElementById("vis_kort").innerHTML = kort;
}
<center>
  <main>
    <h1>Kortspil til opgave 2</h1>
    <h2>Indtast nr på kort<br></h2>
    <textarea id="Nr">
        </textarea>
    <p></p>
    <button type="button" onclick="visKort()">Vis mit kort</button> <br>
    <p id="vis_kort"><br>
  </main>
</center>

【问题讨论】:

  • if else if 应该做什么?第一个 if 仅在 textarea 包含字符串 h-ace 时才匹配(然后什么也不做),第二个将在第一轮之后中断循环。因此它总是会在第一轮打印Nr [whatever you've entered] &lt;br&gt; Dit kort er h-ace,然后停止循环。

标签: javascript html arrays for-loop if-statement


【解决方案1】:

你的循环的编写方式,它总是会附加第一张卡片,然后在第二张卡片上中断。您需要将x(选择的数字)与i(牌组中的索引)进行比较,并且只有在它们匹配时才设置文本。但是,这有点多余——您可以直接使用x 访问卡片组。见下文:

function visKort() {
  var x = Number(document.getElementById("Nr").value);
  var hjerter = ['h-ace', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'h9', 'h10', 'h-jack', 'h-queen', 'h-king'];

  document.getElementById("vis_kort").innerHTML = "Nr " + x + "<br>" + "Dit kort er " + hjerter[x-1];
}
<center>
  <main>
    <h1>Kortspil til opgave 2</h1>
    <h2>Indtast nr på kort<br></h2>
    <textarea id="Nr">
        </textarea>
    <p></p>
    <button type="button" onclick="visKort()">Vis mit kort</button> <br>
    <p id="vis_kort"><br>
  </main>
</center>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2018-09-21
    • 2017-07-20
    相关资源
    最近更新 更多