如何将事件侦听器添加到单选按钮-不触发地雷

我有一些日期输入,但是我只想在用户单击“日期范围”单选按钮时显示它们。 所以我的html看起来像这样:

@*@Html.RadioButton("radioTimeFilter","range",false) Date Range*@
<input id="radioTimeFilter" type="radio" value="false"> Date Range
<div class="radio-content" style="display:none;">
    <input id="txtDateoneFilter" type="text" style="width: 70px;" placeholder="Start Date" />&nbsp;to&nbsp;
    <input id="txtDateTwoFilter" type="text" style="width: 70px;" placeholder="End Date" />
</div>
<br />

我希望使用html.radiobutton,但可以使用。

现在我要折叠的函数如下:

function addCollapsibleCapabilities(coll) {
    for (var i = 0; i < coll.length; i++) {
        coll[i].addEventListener("click",function () {
            alert(coll);
            this.classList.toggle("active");

            var content = this.nextElementSibling;
            if (content.style.display === "block") {
                content.style.display = "none";
            } else {
                content.style.display = "block";
            }
        });
    }
}

我导入文件并添加功能

    var collapseDateRange = document.getElementById("radioTimeFilter");
    addCollapsibleCapabilities(collapseDateRange);

我的警报没有触发。

wangwangla11 回答:如何将事件侦听器添加到单选按钮-不触发地雷

您期望fallingDateRange是Array,当您使用document.getElementById()选择元素时不会出现这种情况。它将始终为您提供一个元素对象。 只需删除forloop并直接在coll对象上设置侦听器即可。

function addCollapsibleCapabilities(coll) {
    coll.addEventListener("click",function () {
        alert(coll);
        this.classList.toggle("active");

        var content = this.nextElementSibling;
        if (content.style.display === "block") {
            content.style.display = "none";
        } else {
            content.style.display = "block";
        }
}

如果您有多个单选元素,则可以如下使用另一个选择器。但是要比name为您的单选元素提供id属性。

var collapseDateRange = document.getElementsByName("radioTimeFilter");
addCollapsibleCapabilities(collapseDateRange);

上面的代码将为您提供NodeList数组,您可以使用forloop代码遍历每个单选按钮并设置click事件监听器。

本文链接:https://www.f2er.com/2968456.html

大家都在问