是获取后端json数据
得等到加入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="¥"+_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阻止脚本运行,看看你的列表有没有显示出来……如果显示出来了,那就妥妥的是灵异事件了。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答870 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
从后端获取数据和
getElementsByTagName
有啥关系,还有。。要贴代码