-2

我正在从服务器获取数据并打印到表格中。我采用了一个带有两个选项(批准和不批准)的下拉菜单。我想调用一个函数来更新它被选中的那一行的值。我的代码是:

 <script type="text/javascript">
/**
 * This code declares your class and saves an object "blogentry" to the table on StackMob.
 * StackMob will create the table for you automatically based on your JSON.
 */
 $(document).ready(function() {
            result();
            function result() {

            var device = StackMob.Model.extend({ schemaName: 'device' });
            var mydevice = new device({ });
                    var q = new StackMob.Collection.Query();
                    q.equals('device_org', 1);
                    q.setRange(0,9).orderDesc('lastmoddate');

                    mydevice.query(q, {
                        success: function(modal) {
                            //After StackMob returns "Bill Watterson", print out the result
                            var array = modal.toJSON();
                             // console.debug(array);
                             //$('#data').html(array[0].user_name);
                             var val = array[0].lastmoddate;
                             $('#last_mod_date').attr('value', val);


                                var key;
                                var count = 0;
                                for(key in array) {
                                     if(array.hasOwnProperty(key)) {
                                      count ++;
                                     }
                                 }
                                                                //  $("#ui").append("<tr><td>"+array[i].device_IMEI+"</td><td>"+array[i].device_model+"</td><td>"+array[i].device_permission+"<select id='abc' ><option value='true'>Approve</option><option value='false'>DisApprove</option></select></td> <td>"+ new Date(array[i].lastmoddate)+"</td><tr>");

                                 //alert(count);
                            for(var i=0; i<=count; i++)
                            {
                            //  if(array[i].org_img == localStorage.getItem("stackmob.oauth2.user"))

                                //alert(array[i].org_img);
                                    //$('#last_mod_date').html(array[0].lastmoddate);
                                    //$('#device_id').attr('value',disapprov);
                                    //alert(val);
                                    $("#ui").append("<tr><td>"+array[i].device_IMEI+"</td><td>"+array[i].device_model+"</td><td>"+array[i].device_permission+"<select id='abc' ><option value='true'>Approve</option><option value='false'>DisApprove</option></select></td> <td>"+ new Date(array[i].lastmoddate)+"</td><tr>");

                $(document).on('change', 'select#abc', function(){
 // do something
 //alert("Updated");
var value=$("#abc").val(); 
alert(value);

 //exit;
});

                                 //end if condition
                            } // end for loop




                        } //end success


                     }); // end imagesearch schema query

                     } // end result function


            setInterval(check_newentry,1000);

                     function check_newentry() {
                        var device = StackMob.Model.extend({ schemaName: 'device' });
            var mydevice = new device({  });
                    var q = new StackMob.Collection.Query();
                    q.orderDesc('lastmoddate');
                    mydevice.query(q, {
                        success: function(modal) {
                            //After StackMob returns "Bill Watterson", print out the result
                            var array = modal.toJSON();
                             // console.debug(array);
                             //$('#data').html(array[0].user_name);


                            // alert(lastmod_date_old +"..."+ lastmod_date);
                             if(lastmod_date_old < lastmod_date)

                            {

                                var val = array[0].lastmoddate;
                                 $('#last_mod_date').attr('value', val);

                                var key;
                                var count = 0;
                                var counter=0;
                                for(key in array) {
                                     if(array.hasOwnProperty(key)) {
                                      count ++;
                                     }
                                 }
                                 //alert(count);
                         for(var i=0; i<=count; i++)
                            {

                                if(counter<50)
                                {

                                    //$("#ui").append("<tr><td>"+array[i].device_IMEI+"</td><td>"+array[i].device_model+"</td><td>"+array[i].device_permission+"</td><td>"+new Date(array[i].lastmoddate)+"</td><tr>");

                                    //------------------------------------------- end device schema code
                                                                        $("#ui").append("<tr><td>"+array[i].device_IMEI+"</td><td>"+array[i].device_model+"</td><td>"+array[i].device_permission+"<select id='myList'><option value='true'>Approve</option><option value='false'>DisApprove</option></select></td> <td>"+ new Date(array[i].lastmoddate)+"</td><tr>");


                                    counter++;

                                }
                                else
                                exit();
                            }
                        }
                        }
                     });
                     } // end check_newentry 
                     });

        </script>

快照是:

在此处输入图像描述

此代码有什么问题以及它将如何适用于所有行。我想选择与该行对应的 IMEI 号码。我怎样才能做到这一点?请帮我。

4

1 回答 1

1

尝试在循环外将事件附加到任何带有 id abc 的选择

$(document).on('change', 'select#abc', function(){
 // do something
});

我相信当您尝试通过 id abc 获取元素时,它只会抓取第一个元素。您可以只更改该代码并使用 jquery 而不是使用

document.getElementById('abc')

利用

$('select#abc').change(function(){
 //do something
});

所以它会抓取所有带有 id abc 的选择

于 2013-05-11T19:52:25.580 回答