有没有更有效的方法将HTMLCollection转换为数组,除了迭代所述集合的内容并手动将每个项目推入数组?
我想迭代一些DOM元素,我这样做:
document.getElementsByClassName( "myclass" ).forEach( function(element, index, array) {
//do stuff
});
Run Code Online (Sandbox Code Playgroud)
但我得到一个错误:document.getElementsByClassName("myclass").forEach不是一个函数
我使用的是Firefox 3,所以我知道这两个getElementsByClassName和Array.forEach都存在.这很好用:
[2, 5, 9].forEach( function(element, index, array) {
//do stuff
});
Run Code Online (Sandbox Code Playgroud)
是getElementsByClassName数组的结果?如果没有,那是什么?
在DOM方面,我一直对HTMLCollections,对象和数组感到困惑.例如...
document.getElementsByTagName("td")和之间有什么区别$("td")?$("#myTable")并且$("td")是对象(jQuery对象).为什么console.log还会在它们旁边显示DOM元素数组,它们不是对象而不是数组?还请提供以下脚本的任何解释.
谢谢
[123,"abc",321,"cba"]=[123,"abc",321,"cba"]
{123:123,abc:"abc",321:321,cba:"cba"}=Object { 123=123, abc="abc", 321=321, more...}
Node= Node { ELEMENT_NODE=1, ATTRIBUTE_NODE=2, TEXT_NODE=3, more...}
document.links= HTMLCollection[a #, a #]
document.getElementById("myTable")= <table id="myTable">
document.getElementsByClassName("myRow")= HTMLCollection[tr.myRow, tr.myRow]
document.getElementsByTagName("td")= HTMLCollection[td, td, td, td]
$("#myTable")= Object[table#myTable]
$("td")= Object[td, td, td, td]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>Collections?</title>
<script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
console.log('[123,"abc",321,"cba"]=',[123,"abc",321,"cba"]);
console.log('{123:123,abc:"abc",321:321,cba:"cba"}=',{123:123,abc:"abc",321:321,cba:"cba"});
console.log('Node=',Node);
console.log('document.links=',document.links);
console.log('document.getElementById("myTable")=',document.getElementById("myTable"));
console.log('document.getElementsByClassName("myRow")=',document.getElementsByClassName("myRow"))
console.log('document.getElementsByTagName("td")=',document.getElementsByTagName("td"));
console.log('$("#myTable")=',$("#myTable")); …Run Code Online (Sandbox Code Playgroud) 嘿伙计们,我想为我的浏览器创建最简单的书签.
javascript:document.getElementsByClassName('source').style.visibility='visible';
Run Code Online (Sandbox Code Playgroud)
我体内有多个div.source.默认情况下,它们设置为.source { display:none; }css.
我的控制台告诉我: Uncaught TypeError: Cannot set property 'display' of undefined
当我单击书签时,所有.source div应该是可见的.我在这做错了什么?
我想用JS修改所有类。有没有办法在不手动设置数组索引的情况下选择它们(例如 [0] 或 [1] 或 [184])?
示例代码:
<div class='message'>something:</div>
<div class='message'>something</div>
Run Code Online (Sandbox Code Playgroud)
const element = document.querySelectorAll(".message");
element.classList.add("color");
Run Code Online (Sandbox Code Playgroud)
它仅在我添加[0]并且仅适用于具有该类的第一个元素时才有效。但我想用类修改所有元素。
我有一个变量account_number,其中存储了帐号.现在我想得到id为account_number的元素的值.怎么在javascript中做到这一点?
我尝试做document.getElementById(account_number).value,但它是null.
HTML看起来像这样:
<input class='transparent' disabled type='text' name='113114234567_name' id='113114234567_name' value = 'Neeloy' style='border:0px;height:25px;font-size:16px;line-height:25px;' />
Run Code Online (Sandbox Code Playgroud)
而js是:
function getElement()
{
var acc_list = document.forms.editBeneficiary.elements.bene_account_number_edit;
for(var i=0;i<acc_list.length;i++)
{
if(acc_list[i].checked == true)
{
var account_number = acc_list[i].value.toString();
var ben_name = account_number + "_name";
alert(document.getElementById("'" + ben_name.toString() + "'").value);
}
}
Run Code Online (Sandbox Code Playgroud)
}
这里bene_account_number_edit是单选按钮.
谢谢
我将所有元素从getElementsByClassName存储到变量,我想我可以foreach循环此变量以从中获取每个ID。但是它不起作用。
var el = document.getElementsByClassName("machine_btn_over_layer");
el.forEach(test);
var test = function() {
console.log("test");
}Run Code Online (Sandbox Code Playgroud)
<div class="machine_btn_over_layer"></div>
<div class="machine_btn_over_layer"></div>
<div class="machine_btn_over_layer"></div>
<div class="machine_btn_over_layer"></div>Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我收到错误消息说功能不起作用