首页 新闻 会员 周边 捐助

JS 执行顺序,层中绑定onclick事件的参数来自Json循环内部的数组值

0
[已解决问题] 解决于 2014-11-12 11:44

各位老师好:

    今天遇到一个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 );
Frank铭的主页 Frank铭 | 初学一级 | 园豆:8
提问于:2014-01-02 19:32
< >
分享
最佳答案
0

用浏览器上的开发工具进行调试!从开始一步一步调到结束,应该会发现问题出在那里,js还是用善于用调试来解决问题

奖励园豆:5
秋壶冰月 | 大侠五级 |园豆:5903 | 2014-01-02 20:09

谢谢您的提示:)

 

->问题是在这一步:htmlByBubbleLayer += "</table> </td></table></div> ";//中间内容结束

   ,通过快速监视:jsonDemo //有值[101,102]

   但UpdateIsViewStateByMulity(\'' + (jsonDemo)//没有值 undeifind

->估计是执行的顺序的问题,还没找到入手解决的方法

Frank铭 | 园豆:8 (初学一级) | 2014-01-02 20:14

@Frank铭: 我解决顺序执行问题,就是在第一个方法最后的时候,调用第二个方法

$(function(){
    //执行

  //最后调用 下一个方法
});

function InitTable()
{
   //初始化表格
   //最后调用下一个方法  
   //LoadData()  
}

function LoadData()
{

}
秋壶冰月 | 园豆:5903 (大侠五级) | 2014-01-02 20:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册