能幫我看下哪里出問題了么?檢查了N多遍,還是沒檢查出問題所在
<!doctype html>
<html>
<head>
??? <meta charset="UTF-8">
?? ?<title>Document</title>
??? <script type="text/javascript">
? window.onload=function(){
??? var oParent = document.getElementById("list");
??? var len1 = getByClass("on","list");
??? alert(len1.length);
??? var len2 = getByClass("on");
??? alert(len1.length);
??? ?
}
function getByClass(clsName, parent){
?//定義函數getByClass()實現獲取document或指定父元素下所有class為on的元素 ?
?? var oClass = parent.getElementsByTagName("*");
?? var boxArr = new Array();
?? for(var i =0;i<oClass.length;i++){
?????? if(oClass[i].className == clsName){
?????????? boxArr.push(oClass[i]);
?????? }
?????? return boxArr;
?? }
?}
</script>
</head>
<body>
?? ??? ?<ul id="list">
?? ??? ??? ?<li>1</li>
?? ??? ??? ?<li>2</li>
?? ??? ??? ?<li>3</li>
?? ??? ??? ?<li>4</li>
?? ??? ?</ul>
?? ??? ?<p>class為on的p標簽</p>
</body>
</html>
2016-09-15
2016-06-12
1、getByClass(clsName,parent)函數里的parent參數是元素的ID,而不是元素本身,所以應該通過document.getElementById(parent),先定位到這個元素,然后再getElementsByTagName(clsName)獲取元素下所有的子元素。
2、就是首先要判斷參數parent是否存在,如果存在,就用document.getElementById(parent)定位元素,如果不存在,就document.body定位全局。用三目運算判斷比較快捷一些,寫法如下var oClass=(parent?document.getElementById(parent):document.body).getElementsByTagName(clsName)
3、你的?return boxArr;寫在了for循環里面,導致循環只執行一次就跳出函數了,也就是只判斷了第一個子元素的class是不是on。所以應該return boxArr;寫在getByClass(clsName,parent)函數的最后一句,因為執行了return語句,函數就跳出了,return后面的任何語句都不會再執行。
4、你的body里也沒給任何元素添加名稱為on的class類。
2016-03-28
<!doctype html>
<html>
<head>
? ? <meta charset="UTF-8">
? ? <title>Document</title>
? ? <script type="text/javascript">
? window.onload=function(){
? ? <!--var oParent = document.getElementById("list");-->
? ? var len1 = getByClass("on","list");
? ? alert(len1.length);
? ? var len2 = getByClass("on");
? ? alert(len2.length);
? ? ?
}
function getByClass(clsName,parent){
?//定義函數getByClass()實現獲取document或指定父元素下所有class為on的元素 ?
? ?var oParent=parent?document.getElementById(parent):document,
? ? oClass = oParent.getElementsByTagName('*');
? ?var boxArr = new Array();
? ?for(var i=0;i<oClass.length;i++){
? ? ? ?if(oClass[i].className==clsName){
? ? ? ? ? ?boxArr.push(oClass[i]);
? ? ? ?}
? ?}
? ?return boxArr;
?}
</script>
</head>
<body>
? ? ? ? <ul id="list">
? ? ? ? ? ? <li class="on">1</li>
? ? ? ? ? ? <li class="on">2</li>
? ? ? ? ? ? <li>3</li>
? ? ? ? ? ? <li>4</li>
? ? ? ? </ul>
? ? ? ? <p class="on">class為on的p標簽</p>
</body>
</html>
大兄弟你這個問題比較多啊,上面是我根據你的改的,你對比著學習一下吧
2016-03-08
var len1 = getByClass("on","list");
??? alert(len1.length);
??? var len2 = getByClass("on");
??? alert(len1.length);
將len1改為len2!再將參數里的引號改為英文引號即可!
2016-02-25
?return boxArr; 往外挪一層,遍歷完了再返回
2016-02-19
?var len1 = getByClass("on","list");
這句應該是
?var len1 = getByClass("on",oParent);
2016-01-26
?<script type="text/javascript">
? window.onload=function(){
??? var oParent = document.getElementById("list");
??? var len1 = getByClass("on","list");
??? alert(len1.length);
??? var len2 = getByClass("on");
//彈出len2的長度
??? alert(len2.length);
??? ?
}
function getByClass(clsName, parent){
?//定義函數getByClass()實現獲取document或指定父元素下所有class為on的元素 ?
//先判斷parent是否存在
if(parent){
var oClass = ducument.getElementById(parent).getElementsByTagName("*");
}else{
?? var oClass = document.getElementsByTagName("*");
}
?? var boxArr = new Array();
?? for(var i =0;i<oClass.length;i++){
?????? if(oClass[i].className == clsName){
?????????? boxArr.push(oClass[i]);
?????? }
?????? return boxArr;
?? }
?}
</script>