6 个回答

从后端获取数据和getElementsByTagName有啥关系,还有。。要贴代码

代码贴出来看看

得等到加入DOM后才能操作吧,还有你是不是提前获取了DOM元素?比如列表是一个ID为1的div,在ajax获取完后加进DOM后要重新获取1,你在Ajax前的1只包含Ajax前的DOM结构。

我的意思是 从服务器端获取数据然后创建节点;但是不能得到这些节点,在所有文本都加载完成后还是不能,列表已经在页面显示了

代码如下
ajax({

method : 'get',
url : 'http://study.163.com/webDev/couresByCategory.htm',
data : {
    'pageNo':'1',
    'psize':'20',
    'type':'10'
},
success : function (data) {
    console.log(data);
    var _data= JSON.parse(data);

    var oDiv = document.getElementById("courseList");

    for(i=0;i<_data.list.length;i++){
        var oLi = document.createElement("li");
        oDiv.appendChild(oLi);

        var _img = document.createElement("img");
        var _name = document.createElement("p");
        var _provider = document.createElement("p");
        var _count = document.createElement("p");
        var _price = document.createElement("p");

        _img.setAttribute("src", _data.list[i].middlePhotoUrl);
        _name.innerHTML=_data.list[i].name;
        _provider.innerHTML=_data.list[i].provider;
        _count.innerHTML=_data.list[i].learnerCount;
        _price.innerHTML="&yen;"+_data.list[i].price;

        oLi.appendChild(_img);
        oLi.appendChild(_name);
        oLi.appendChild(_provider);
        oLi.appendChild(_count);
        oLi.appendChild(_price);
       
        _name.setAttribute('class','courseName');
        _provider.setAttribute('class','courseProvider');
        _count.setAttribute('class','peopleCount');
        _price.setAttribute('class','coursePrice');
    }
},
async : true

});

既然是异步的……那么你只能在success的回调里面选择元素吧。在你贴出来的代码里我好像没看到……?
提供一个思路:在你的document.getElementByTagName之前打个alert阻止脚本运行,看看你的列表有没有显示出来……如果显示出来了,那就妥妥的是灵异事件了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题