Javascript 仅当dom中的元素禁用了属性时才选择它们

Javascript 仅当dom中的元素禁用了属性时才选择它们,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我试图从Dom only disabled=disabled中获取元素,然后使用angularjs应用一个值,为此我使用getElementsByTagName,结果是我不知道如何只选择那些属性为disabled的元素。 我正在尝试将其应用于自定义指令: HTML: 谢谢大家! 我建议使用querySelector而不是getElementsByTag,例如,它允许您编写CSS样式选择器 如果你只是想得到所有禁用的deb按钮,你可以这样做 var b = document.querySelect

我试图从Dom only disabled=disabled中获取元素,然后使用angularjs应用一个值,为此我使用getElementsByTagName,结果是我不知道如何只选择那些属性为disabled的元素。 我正在尝试将其应用于自定义指令:

HTML:

谢谢大家!

我建议使用querySelector而不是getElementsByTag,例如,它允许您编写CSS样式选择器

如果你只是想得到所有禁用的deb按钮,你可以这样做

var b = document.querySelectorAll('deb-button:disabled')
但是,如果要获取所有将“禁用”属性值设置为“禁用”的元素

但是如果您想使用getElementsByTagName,您可以循环使用getElementsByTagName的结果,并过滤不具有disabled属性的deb按钮

ES6:

ES5:


好的,由于您使用的是指令,因此我更愿意以这种方式使用选择器:

函数链接范围、元素、属性{ angular.elementelement.querySelectorAll'deb-button:已禁用' }


这只是另一种方式。

其他按钮不是当前按钮吗?还是只有当前的一个?它们是否都驻留在一个控制器实例中?
.directive('debButton', function () {
return {
  restrict: 'EA',
  templateUrl: function (element, attrs) {
    return attrs.basePath + "/templates/debbutton.html";
  },
  scope: {
    textbtn: '@',
    colorbtn: '@',
    isdisabled: '@'
  },
  controller: ['$scope', function ($scope) {
    var b = document.getElementsByTagName('deb-button');
    if (b) {
      console.log(b);
    }      
  }],
  link: function ($scope, colorbtn, isdisabled) {
    if (!$scope.colorbtn) {
      $scope.colorbtn = 'primary';
    }
  }
};
var b = document.querySelectorAll('deb-button:disabled')
var b = document.querySelectorAll('deb-button[disabled="disabled"]');
var b = document.getElementsByTagName('deb-button').filter( e => e.getAttribute('disabled') === 'disabled' )
var a = document.getElementsByTagName('deb-button');
var b = [];
for (var i= 0; i < a.length; i++){
   if (a[i].getAttribute('disabled') === 'disabled') { b.push(a[i]) }
}