Как работать с булевыми методами?
d - это NodeList (список узлов), не имеющий метода hasAttribute()
попробуй так (es5 версия)var tags = ['div', 'span', 'ul', 'li', 'p', 'script', 'h1', 'h2'];
var forEach = Array.prototype.forEach

tags.map(function(tag) {
  var list = document.querySelectorAll(tag);

  forEach.call(list, function(el) {
    el.className && console.log(el.className)
  })
})
1. Что такое el[j]?
2. В d вы сохраняете выборку, то ест коллекцию, но обращаетесь к ней как к одному элементу.