首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

获取不到子元素的文本内容?解决办法

2012-10-18 
获取不到子元素的文本内容?在页面有li classcollectTabViewspan classcurrent全部收藏/span/

获取不到子元素的文本内容?
在页面有
<li class="collectTabView"><span class="current">全部收藏</span></li>
<li class="collectTabView"><a href="#">特别关注</a></li>
然后通过JavaScript:
var arrCollectTabView = $(".collectTabView");
for ( var i = 0; i < arrCollectTabView.length; i++) {

  (function(i) {
arrCollectTabView[i].onclick = function(){
for ( var i = 0; i < arrCollectTabView.length; i++) {

}
YAHOO.collectUser.gettotalnum(arrCollectTabView.children()[i].text);
};
  })(i);
}
为什么”arrCollectTabView.children()[i].text“报错,把其中的i变成0,1分别就是全部收藏和特别关注,但是我必须要是变量啊,如何修改呢?

[解决办法]
arrCollectTabView[i].onclick = function(){
for ( var i = 0; i < arrCollectTabView.length; i++) {

}
YAHOO.collectUser.gettotalnum(arrCollectTabView.children()[i].text);



arrCollectTabView[i].onclick = function(){
for ( var j = 0;j < arrCollectTabView.length; j++) {

}
YAHOO.collectUser.gettotalnum(arrCollectTabView.children()[i].text);
[解决办法]
你搞了个空循环
arrCollectTabView[i].onclick = function(){
for ( var i = 0; i < arrCollectTabView.length; i++) {

}
到了这里 i==2 了
YAHOO.collectUser.gettotalnum(arrCollectTabView.children()[i].text);

[解决办法]
Lz对jQuery的事件机制和DOM操作有待加强喔
再有就是,对jQuery与原生的用法之间不要搞混了

JScript code
$(".collectTabView").click(function(){    //在这里面,使用$(this)可获取每一个<li class="collectTabView"></li>的DOM结构    var child=$(this).children();    if(child.hasClass('current')){        child.replaceWith('<a href="#">'+child.html()+'</a>');        /*        //下面的方式是使用jQuery操作DOM的方式        var links=$('<a>').attr("href","#").text(child.html());        $(this).empty();        $(this).append(links);        */    }else{        child.replaceWith('<span class="current">'+child.html()+'</span>');        /*        //下面的方式是使用jQuery操作DOM的方式        var span=$('<span>').addClass('current').html(child.html());        $(this).empty();        $(this).append(span);        */            }})
[解决办法]
child是一个jQuery对象。之前有和你说过,不要把jQuery和原生的搞混了
jQuery筛选子元素,可以用child.eq(index)来进行

再一个,jQuery的each()方法可以用来遍历所有元素

到现在还没搞明白你到底是想干嘛

你将事件触发放在li的click事件中,如果是想批量替换6个li中。span换成a,a换成span

那么,你这li中的a永远无法生效,你这是要干嘛呢??

HTML code
<script type="text/javascript">$(function(){    $(".collectTabView").click(function(){        $(this).parent().find('li').each(function(){            var child=$(this).children();            if(child.hasClass('current')){                child.replaceWith('<a href="#">'+child.html()+'</a>');            }else{                child.replaceWith('<span class="current">'+child.html()+'</span>');            }        })    })})</script><div>    <ul>        <li class="collectTabView"><span class="current">全部收藏1</span></li>        <li class="collectTabView"><a href="#">特别关注</a></li>        <li class="collectTabView"><span class="current">全部收藏2</span></li>        <li class="collectTabView"><a href="#">特别关注</a></li>        <li class="collectTabView"><span class="current">全部收藏3</span></li>        <li class="collectTabView"><a href="#">特别关注</a></li>    </ul></div> 


[解决办法]

JScript code
$(function(){    $(".collectTabView").click(function(){        var selected=$(".collectTabView .current");        selected.replaceWith('<a href="#">'+selected.html()+'</a>');        $(this).children().replaceWith('<span class="current">'+$(this).children().html()+'</span>');            })}) 

热点排行