各位老师好:
今天遇到一个JS执行顺序的问题:请教下老师的思路
进度:->在Js文件中,动态拼接了层和表格
->在层中动态拼接了点击事件,回调函数的参数来自数组的值
Ps:onclick=javascript:UpdateIsViewStateByMulity(\'' + (jsonDemo) + '\')
->数组的值通过Json集合循环内得到
Ps:jsonDemo = JSON.stringify(SaveIdByArr);
问题: ->获取不到参数报:undefined.
1 var jsonDemo;//全局变量
var SaveIdByArr = new Array(); //定义数组存储集合 2 $(".mydiv").remove();//清空气泡集合 3 if (typeof (json[3][0].ID) != "undefined") { // <table id='dpop' class='popup'> 4 5 var htmlByBubbleLayer = '<div class="mydiv" onclick=javascript:UpdateIsViewStateByMulity(\'' + (jsonDemo) + '\')><table title="提示用户已完成的微博文章" id="dpop" class="popup" cellspacing="0" cellpadding="0" border="0">' 6 7 htmlByBubbleLayer += "<tr><td id='topleft' class='corner'></td><td class='top'></td><td id='topright' class='corner'></td> </tr>"; 8 htmlByBubbleLayer += "<tr><td class='left'></td>" 9 10 htmlByBubbleLayer += "<td><table class='popup-contents'>"; 11 htmlByBubbleLayer += "<tr><th>序号</th><th>内容</th><th class='close'><a href='javascript:void(0)' onclick='closeLayer()'>关闭</a></th><tr>"//临时加入 状态为3 <th>内容</th> 12 for (var i = 0; i < json[3].length; i++) { 13 //debugger; 14 var CurrendNoViewId = json[3][i]["ID"]; 15 var IncrementId = i + 1; 16 var CurrendNoViewCreated = json[3][i]["Created"]; 17 var CurrendNoViewContent = json[3][i]["Content"]; 18 //debugger; 19 SaveIdByArr.unshift(CurrendNoViewId);//每次插入数据在序列最前面 20 jsonDemo = JSON.stringify(SaveIdByArr);用户手动获取数组集合 21 htmlByBubbleLayer += IsBubbleLayerViewDataList(IncrementId, CurrendNoViewContent, CurrendNoViewCreated);//先写到层里,拆成三元表达式 //拼接集合ID 22 } 23 24 25 htmlByBubbleLayer += "</table> </td></table></div> ";//中间内容结束 26 $("body").append(htmlByBubbleLayer).fadeIn('500');//#BubbleLayer 27 28 29 /*手动异步更新ID集合的方法 30 function UpdateIsViewStateByMulity(SaveIdByArrParamer) { 31 var _idByState = SaveIdByArrParamer.toString(); var intViewState = 1; 32 $.get("/Post/UpdateMulictId/", { IdByIsViewState: _idByState, ViewState: intViewState, r: Math.random() }, function (resultByUpdateIsViewState) { 33 34 if (resultByUpdateIsViewState != "SuccessByUpdate") { 35 alert("请检查数据是否异常"); 36 return false; 37 } 38 else { 39 //清空集合 40 $('#BubbleLayer tr').each(function (index, obj) { 41 if (index > 0) { 42 $(obj).remove(); 43 } 44 });//end each 45 //刷新 (后) 46 //LoadCurrentTask(); 47 } 48 } 49 );
用浏览器上的开发工具进行调试!从开始一步一步调到结束,应该会发现问题出在那里,js还是用善于用调试来解决问题
谢谢您的提示:)
->问题是在这一步:htmlByBubbleLayer += "</table> </td></table></div> ";//中间内容结束
,通过快速监视:jsonDemo //有值[101,102]
但UpdateIsViewStateByMulity(\'' + (jsonDemo)//没有值 undeifind
->估计是执行的顺序的问题,还没找到入手解决的方法
@Frank铭: 我解决顺序执行问题,就是在第一个方法最后的时候,调用第二个方法
$(function(){ //执行 //最后调用 下一个方法 }); function InitTable() { //初始化表格 //最后调用下一个方法 //LoadData() } function LoadData() { }