HTML 输入标签是否需要 ID 或名称

Do HTML input tags require an id or name?

本文关键字:ID 输入 标签 是否 HTML      更新时间:2023-09-26

我有一个包含循环的防暴标签,如下所示。这个循环在另一个防暴循环内(也许很重要?升级到 riot 版本 2.3.0 后,页面变得缓慢且无响应。发行说明指出,防暴循环速度较慢,但更可靠。

我发现当我从输入标签中删除 id 时,页面再次响应。由于输入上没有id,我想我会重写onclick方法以识别以其他方式单击了哪个节点。

这不起作用,因为似乎我的点击方法没有被注册。所以我的问题:没有ID或名称的输入是否违法?还是我做错了什么?

<div class="card-action">
   <div each={field in obj.fields} class="col s6" no-reorder>
       <a>{ field.label }</a>
       <form action='#'>
        <input type="radio" id="always-{field.id}" checked={ parent.currentDisplayAlways[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Always</label>
        <input type="radio" id="conditional-{field.id}" checked={ parent.currentDisplayConditional[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Conditional</label>
        <input type="radio" id="never-{field.id}" checked={ parent.currentDisplayNever[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Never</label>
        </form>
     </div>
 </div>

我认为您可以绑定方法并在方法中添加您的 ID 或对象。如果要查找单击的项目,可以使用事件。

没有 idname 属性的 HTML input绝对是合法的。要识别在 Javascript 中没有id的情况下单击了哪个节点,您可以传递要调用 this 关键字的函数,该函数几乎是该元素的整个 DOM 对象,就像 document.getElementById() 检索的那样。因此,该函数如下所示:

function firedAfterClicked(el) {
   alert(el.checked); //Whatever you want it to do
}

输入如下所示:

<input type="radio" checked={ parent.currentDisplayNever[field.name] } onclick="firedAfterClick(this)">

该代码在单击时调用 firedAfterClick 函数,并将输入作为 DOM 元素传递给它,由 this 关键字提供。

但是,我有一种感觉,真正的问题与您的 Riot 代码有关。对我来说,删除id属性似乎更像是一种临时解决方法,而不是真正的解决方案。