【问题标题】:I'm having problems with a CSS/HTML checkbox nested inside ul, li elements我遇到了嵌套在 ul、li 元素中的 CSS/HTML 复选框的问题
【发布时间】:2015-12-23 12:47:50
【问题描述】:

我在使用 HTML/CSS 复选框时遇到问题。我编写的代码在一组 ul/li 元素中有一个复选框。问题是如果我点击任何 li 元素的文本,它会划掉列表中的第一个成分,而不是划掉你点击的 li 元素。除了这个打嗝之外,复选框本身也可以正常工作。关于发生了什么以及如何解决此问题的任何建议或想法?

input[type=checkbox] + label {
  color: black;
  font-style: normal;
}
input[type=checkbox]:checked + label {
  color: #ccc;
  font-style: italic;
}
<ul style="list-style-type: none;">
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">2(6 ounce) filet mignon steaks</label>
  </li>
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">1 teaspoon olive oil</label>
  </li>
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">Coarse kosher salt and freshly ground black pepper</label>
  </li>
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">1/2 cup red wine of your choice</label>
  </li>
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">2 tablespoons of butter</label>
  </li>
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">Oven proof skillet/ Cast-iron skillet</label>
  </li>
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">Oven mitts!</label>
  </li>
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">Thermometer</label>
  </li>
</ul>

【问题讨论】:

  • 每个复选框 id 应该不同。

标签: html css checkbox


【解决方案1】:

这是因为每个&lt;label&gt; fors 都对应同一个name:它们都针对名称ossm

这默认为第一个 ossm 元素,因此它们每个都是第一个 &lt;label&gt;

要解决此问题,请为每个复选框设置一个唯一的 name(和相同的 &lt;label for&gt;)。

<li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">2(6 ounce) filet mignon steaks</label>
</li>
<li>
    <input type="checkbox" id="ossm2" name="ossm2">
    <label for="ossm2">1 teaspoon olive oil</label>
</li>

另外,你不应该让他们每个人都有id="ossm"ID's are supposed to be unique.

【讨论】:

  • 非常感谢。我会因为愚蠢而把头撞到墙上。
  • @powerup7 很高兴我提供了帮助(如果我提供了帮助,请不要忘记接受!)
  • 而且@powerup7 不要撞到你的头。那可能会很痛。相反,通过投票和/或接受我的回答来感觉良好!谢谢!
  • @powerup7 我看到你对 SO 有点陌生。接受答案意味着单击答案左侧数字下方的绿色复选标记。当您获得更多声望点时,您也可以投票。
  • 标签的for 属性连接到输入ID 属性,而不是name。因为,就像您提到的那样,ID 必须是唯一的,而名称则不一定。
【解决方案2】:

您在每个输入元素中都有相同的名称和 ID!每个输入都必须是不同的。

【讨论】:

  • @BrianWillis:这不仅是一个答案,而且是正确。请在评估审核中的答案时更加小心。
【解决方案3】:

你需要修改for属性和id唯一 HTML 代码

<ul style="list-style-type: none;">
  <li>
    <input type="checkbox" id="ossm" name="ossm">
    <label for="ossm">2(6 ounce) filet mignon steaks</label>
  </li>
  <li>
    <input type="checkbox" id="ossm1" name="ossm">
    <label for="ossm1">1 teaspoon olive oil</label>
  </li>
  <li>
    <input type="checkbox" id="ossm2" name="ossm">
    <label for="ossm2">Coarse kosher salt and freshly ground black pepper</label>
  </li>
  <li>
    <input type="checkbox" id="ossm3" name="ossm">
    <label for="ossm3">1/2 cup red wine of your choice</label>
  </li>
  <li>
    <input type="checkbox" id="ossm4" name="ossm">
    <label for="ossm4">2 tablespoons of butter</label>
  </li>
  <li>
    <input type="checkbox" id="ossm5" name="ossm">
    <label for="ossm5">Oven proof skillet/ Cast-iron skillet</label>
  </li>
  <li>
    <input type="checkbox" id="ossm6" name="ossm">
    <label for="ossm6">Oven mitts!</label>
  </li>
  <li>
    <input type="checkbox" id="ossm7" name="ossm">
    <label for="ossm7">Thermometer</label>
  </li>
</ul>

css代码

input[type=checkbox] + label {
  color: black;
  font-style: normal;
}
input[type=checkbox]:checked + label {
  color: #ccc;
  font-style: italic;
}

【讨论】:

  • 避免只回答代码。请编辑并添加说明。
  • 名称也需要不同——与提交表单时发送数据有关
  • 我不是在谈论 CSS 或 HTML,我是在谈论帖子或提交到下一页以及发送的数据在那里接收/读出的方式 ($_POST['name1' ]、$_POST['name2'] 等)。
  • 它超出了我的朋友的范围...您提供的答案部分正确您需要更改保持 id 为唯一..
  • 我写了“还有名字...” = ID 名字
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2022-08-17
  • 2018-05-30
  • 1970-01-01
  • 2012-04-09
  • 2015-10-01
  • 1970-01-01
相关资源
最近更新 更多