标签: getelementsbyclassname

JS:使用Array.forEach迭代getElementsByClassName的结果

我想迭代一些DOM元素,我这样做:

document.getElementsByClassName( "myclass" ).forEach( function(element, index, array) {
  //do stuff
});
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误:document.getElementsByClassName("myclass").forEach不是一个函数

我使用的是Firefox 3,所以我知道这两个getElementsByClassNameArray.forEach都存在.这很好用:

[2, 5, 9].forEach( function(element, index, array) {
  //do stuff
});
Run Code Online (Sandbox Code Playgroud)

getElementsByClassName数组的结果?如果没有,那是什么?

javascript foreach getelementsbyclassname

205
推荐指数
8
解决办法
16万
查看次数

querySelectorAll和getElementsBy*方法返回什么?

getElementsByClassName(等类似的功能getElementsByTagNamequerySelectorAll)的工作方式相同getElementById,还是他们返回元素的数组?

我问的原因是因为我试图改变所有元素的样式getElementsByClassName.见下文.

//doesn't work
document.getElementsByClassName('myElement').style.size = '100px';

//works
document.getElementById('myIdElement').style.size = '100px';
Run Code Online (Sandbox Code Playgroud)

javascript dom-traversal getelementsbyclassname

125
推荐指数
8
解决办法
8万
查看次数

按类和ID获取元素内部元素 - JavaScript

好吧,之前我曾经涉猎过JavaScript,但我写的最有用的东西是CSS样式切换器.所以我对此有些新意.假设我有这样的HTML代码:

<div id="foo">
    <div class="bar">
        Hello world!
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我怎么改变"Hello world!" 到"再见世界!" ?我知道document.getElementByClass和document.getElementById如何工作,但我想更具体.对不起,如果之前有人询问过.

javascript getelementbyid getelementsbyclassname

114
推荐指数
5
解决办法
30万
查看次数

如何使用JavaScript getElementByClass而不是GetElementById?

我正在尝试根据每个DIV的类别切换网站上某些DIV元素的可见性.我正在使用基本的JavaScript代码段来切换它们.问题是该脚本仅使用getElementById,因为getElementByClassJavaScript不支持.不幸的是,我必须使用class而不是id来命名DIV,因为DIV名称是由我的XSLT样式表使用某些类别名称动态生成的.

我知道某些浏览器现在支持getElementByClass,但由于Internet Explorer不支持,我不想走那条路.

我发现脚本使用函数来按类获取元素(例如本页#8:http://www.dustindiaz.com/top-ten-javascript/),但我无法弄清楚如何集成它们与我的切换脚本.

这是HTML代码.DIV本身缺失,因为它们是在使用XML/XSLT加载页面时生成的.

主要问题:如何获取以下Toggle脚本以获取逐个元素而不是按ID获取元素?

<html>

<head>

<!--This is the TOGGLE script-->
<script type="text/javascript">
<!--
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
//-->
</script>

</head>

<!--the XML/XSLT page contents will be loaded here, with DIVs named by Class separating dozens of li's-->

<a href="#" onclick="toggle_visibility('class1');">Click here to toggle visibility of class 1 objects</a>

<a href="#" onclick="toggle_visibility('class2');">Click here to …
Run Code Online (Sandbox Code Playgroud)

javascript class getelementbyid toggle getelementsbyclassname

88
推荐指数
3
解决办法
39万
查看次数

如何从纯JavaScript中的元素中删除一个类?

我想知道如何选择类名为"widget"和"hover"的所有元素,然后从这些元素中删除类"hover".

我有以下JavaScript代码,用于选择类"widget"和"hover"的所有元素:

var elements = document.getElementsByClassName('widget hover');
console.log(elements);
Run Code Online (Sandbox Code Playgroud)

这似乎工作并输出这样的东西(没有错误):

[div#.widget... 
Run Code Online (Sandbox Code Playgroud)

问题是,如果我尝试删除类"悬停",我收到一个错误:

var elements = document.getElementsByClassName('widget hover');
console.log(elements);
elements.classList.remove("hover");
Run Code Online (Sandbox Code Playgroud)

这输出:

[item: function]
length: 0
Uncaught TypeError: Cannot call method 'remove' of undefined 
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我做错了什么?


请注意我在jQuery中使用它:

$('.widget.hover').removeClass('hover');
Run Code Online (Sandbox Code Playgroud)

...但我正在寻找纯JavaScript的解决方案.

javascript getelementsbyclassname

54
推荐指数
6
解决办法
7万
查看次数

getElementsByClassName - 奇怪的行为

首先,抱歉我的英语不好......

我写了一个函数来改变元素类来改变它们的属性.出于某种原因,只有一些元素发生了变化,我花了几个小时才找到解决方案,但他对我来说似乎很奇怪,也许你可以向我解释一下.

function replace(){
  var elements = document.getElementsByClassName('classOne');

  for (var i = 0; i < elements.length; i++) {
    elements[i].className = 'classTwo';               
  }
}
Run Code Online (Sandbox Code Playgroud)

不能正常工作,在这里演示,[在chrome 25和FF],所以我采用了循环系数:

function replace(){
  var elements = document.getElementsByClassName('classOne');

  for (var i = 0; i < elements.length; i) { // Here’s the difference
    elements[i].className = 'classTwo';               
  }
}
Run Code Online (Sandbox Code Playgroud)

这很好用!似乎被称为"推",并且不需要系数......这是正常的吗?它与我见过的例子不同.

提前致谢!

html javascript getelementsbyclassname htmlcollection

13
推荐指数
2
解决办法
1694
查看次数

如何获取getElementsByClassName中的当前元素

考虑一个简单的JS事件

document.getElementsByClassName('test')[0].onclick=function(){
document.getElementsByClassName('test')[0].innerHTML = 'New Text';
}
Run Code Online (Sandbox Code Playgroud)

如何将此代码扩展为通常适用于所有元素class="test".我的意思是点击元素并替换其内容.实际上,我们需要从click事件中获取节点号(在括号内提供).

我试图更好地理解不显眼的代码中的javascript,而不是像jQuery这样的实用方法.

javascript unobtrusive-javascript javascript-events getelementsbyclassname

11
推荐指数
1
解决办法
5万
查看次数

Firefox控制台中的对象'不可用'

我有几个div class='class_name',也已经声明了

var A = document.getElementsByClassName('class_name');
console.log(A[0]);
Run Code Online (Sandbox Code Playgroud)

Chrome控制台显示:

<div class="class_name"> div 1 </div>
Run Code Online (Sandbox Code Playgroud)

Firefox控制台显示:

<unavailable>
Run Code Online (Sandbox Code Playgroud)

问题是什么或可能的原因是什么?

html javascript firefox getelementsbyclassname

11
推荐指数
2
解决办法
3169
查看次数

单击另一个元素后,使用vanilla javascript将类添加/删除到其他元素

我已经查看了许多类似的问题,但找不到一个在vanilla JS中回答的具体示例如何将类添加到一个不同的元素中并从中删除.我知道它与设置循环和遍历元素有关,但我在确切的过程中迷路了.

我有许多具有类名的元素,faq-container当我点击其中任何一个时,我希望将该类faq-display添加到body标签中.我知道我必须设置一个循环,for (var i = 0; i < elements.length; i++) { elements[i].classList.remove('hover'); }但我不确定在代码中写入它的确切位置以使其工作.我尝试了很多方法,但都失败了.

我当前的脚本如下所示,我只是将数组中的第一个元素作为目标,但我希望能够点击任何faq-container元素并将类名添加到第一个也是唯一的body标记:

document.addEventListener("DOMContentLoaded", function() {

  document.getElementsByClassName('faq-container')[0].addEventListener('click', function() {
    var faqToggle = document.getElementsByTagName('body')[0];
    if (faqToggle.classList.contains('faq-display')) {
      faqToggle.classList.remove('faq-display');
      // alert("remove faq display!");
    } else {
      faqToggle.classList.add('faq-display');
      // alert("add faq display!");
    }
  });


});
Run Code Online (Sandbox Code Playgroud)
<div class="faq-container cf" id="faq-container">
  <h3 <?=ifxless::element( 'name')?>><?=ifxless::fill($this,'name');?> </h3>

  <div class="faq-content">
    <div class="h_line">&nbsp;</div>

    <div class="faq-bullets" <?=ifxless::element( 'content')?>>
      <?=ifxless::fill($this, 'content');?>
    </div>

  </div>

</div>
Run Code Online (Sandbox Code Playgroud)

javascript class getelementsbytagname getelementsbyclassname

10
推荐指数
2
解决办法
2万
查看次数

在JavaScript中按类A或B获取元素

是否有可能获得具有指定类之一的元素?这是一样越来越有元素指定类.

例如,我想捕捉它的类列表包含要么所有元素one,twothree.

也许是这样的:

var oneTwoThree = document.getElementsByClassName("one, two, three");
Run Code Online (Sandbox Code Playgroud)

我也不想使用jQuery.是getElementsByClassName每个课程的唯一选择并将它们结合起来吗?

javascript getelementsbyclassname

9
推荐指数
1
解决办法
4924
查看次数