javascript - 删除所有 DOM 元素中隐藏的属性,除了给出索引的元素使用 Javascript 函数不起作用

标签 javascript jquery html dom

当我调用我的函数时,它不起作用。 当我查询所有元素并循环它们时。我无法对 UI 产生任何影响。

我需要从所有 .question 添加属性 hidden ,并从索引传递给 Js 函数的属性中删除 .hidden 。当我调用该函数时的类。

这是 HTML。

<div class="col-md-12 mb-12 question" hidden="hidden" id="D1">
1
</div>
<div class="col-md-12 mb-12 question" hidden="hidden" id="D2">
2
</div>
<div class="col-md-12 mb-12 question" hidden="hidden" id="D3">
3
</div>
<div class="col-md-12 mb-12 question" hidden="hidden">
4
</div>


在没有循环的情况下单独调用 If 条件中的行是可行的。 我不能在这里做什么。

function hideothersexcept(index){
    var ALLQNS = $('.question');
    for (i = -1; i < ALLQNS.length; i++) {
        if (index == i) {
            $('#' + getid(index)).removeAttr('hidden')
        } else {
            ALLQNS[index].setAttribute("hidden", "hidden");
        }
    }
}
function getid(elm) {
     var ALLQNS = $('.question');
     k = ALLQNS[elm].getAttribute("id");
     return k;
}

最佳答案

尝试下面的代码,它更干净、简洁,然后手动循环所有 div,更重要的是它可以工作:)

function hideothersexcept(index){                
    $('.question').each(function(elIndex, el){
            if(elIndex == index){
            $(el).removeAttr('hidden');
        }else{
            $(el).attr('hidden', 'hidden');
        }
    });   
}

hideothersexcept(1);

它将隐藏除包含数字 2 的 div 之外的所有其他 div。

注意:索引是从零开始的:)

如果不起作用,请告诉我。

关于javascript - 删除所有 DOM 元素中隐藏的属性,除了给出索引的元素使用 Javascript 函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025246/

相关文章:

javascript - 如何获取在不同源域的 iframe 中嵌入另一个页面的网页的 url

javascript - 使用 JavaScript 滚动页面

html - 仅在一个方向滚动背景

javascript - Bootstrap 切换 : One on the rest off

jquery - 如何使用 Angular 6 安装 bootstrap 4 + jquery + popper.js

php - 简单的php ajax聊天

jquery - 在 WordPress 主题选项页面中排队 jquery-ui 元素

javascript - Twitter Bootstrap 按钮事件状态

javascript - 如何形成 JavaScript 对象数组?

javascript - Safari ,JavaScript : wait for print confirmation window