js二维数组
我们经常会用到二维数组,但是javaScript没有二维数组,那么我们应该咋办呢?就是在一维数组里面在创建一个一维数组。
var arr = new Array(10);
for (var i = 0; i < arr.length; i++) {
arr[i]=new Array(8);
//不一定写for循环赋值,还可以直接赋值,在数量有限的情况下
for (var j = 0; j < 8; j ++) {
a[i][j]=i+j;
}
谨慎使用childNodes
childNodes是获取一个节点下的所有子节点,当我想获取的只是li节点的时候,我以为数组长度应该是7的时候,没想到数组的长度是15;不仅包括li元素还
<ul id="source">
<li>北京空气质量:<b>90</b></li>
<li>上海空气质量:<b>70</b></li>
<li>天津空气质量:<b>80</b></li>
<li>广州空气质量:<b>50</b></li>
<li>深圳空气质量:<b>40</b></li>
<li>福州空气质量:<b>32</b></li>
<li>成都空气质量:<b>90</b></li>
</ul>
<script>
var sourceList=document.getElementById("source").childNodes;
console.log(sourceList);
</script>
如何提取子元素和文本节点的值
提取上述 <li>北京空气质量:<b>90</b></li>,提取出里面的“北京空气质量”,“90”并放入二维数组中
function getData() {
var data=new Array(7);
var source=document.getElementById("source");
var cites=source.getElementsByTagName("li");
var bList=document.getElementsByTagName("b");
for (var i = 0; i < cites.length; i++) {
data[i]=new Array(2);
data[i][0]=cites[i].innerHTML.substring(0,cites[i].innerHTML.indexOf("<b>"));
data[i][1]=bList[i].innerHTML;
}
//首先是获取所有的li元素
var source=document.getElementById("source");
var cities=source.getElementsByTagName("li");
//获取里面的文本
for(var i=0;i<cities.length;i++)
{
cites[i].innerHTML.substring(0,cites[i].innerHTML.indexOf("<b>"));//获取到文本
//innerHTML获得的值是:北京空气质量:<b>90</b>
通过indexOf找到特殊字符,返回特殊字符的位置,这样substring才能返回正确的子字符串
}
//获取<b>里面的数字
var bList=document.getElementsByTagName("b");
for(var i=0;i<cites.length;i++)
{
bList[i].innerHTML//获取到li元素里面b元素的内容
}