複選框不確定選擇-js實現

來源:互聯網
上載者:User

最近在擴充《選修課系統》的一個功能——老師新增學生指標(教師持有給自己課程新增學生的指標)時,試寫了一個小功能,總結一下。

如介面為老師新增學生指標介面;查詢出本學期教師自己所教課程,再查詢出所要添加的學生 分別選中後,點擊"添加"按鈕,即可給該學生授課。

想達到的效果:可選擇該教師多門課程,給這些課程添加多個學生;

預想如何?:使用數組,將選擇的課程和學生分別放在數組中;

操作中可能存在的問題:選擇課程和學生的不確定因素,即:選擇了課程1、課程2、課程3後又取消選擇課程1/課程2/課程3,選擇了學生1、學生2後,又取消選擇課程1/課程2——數組如何控制 下面內容給出解釋

這次使用的是js實現

介面:


前台:

                                                                                                                                                                             ');">                                    <%#Eval("SchoolYear")%>                            <%#Eval("Semester")%>                            <%#Eval("CourseCode")%>                            <%#Eval("CourseName")%>                            <%#Eval("CourseCategoryName")%>                            <%#Eval("CourseTeacherCount")%>                                                      

                                    <%--  --%>                                                        "/>                                                                      <%#Eval("StudentCode") %>                            <%#Eval("StudentName") %>                            <%#Eval("Sex") %>                            <%#Eval("ExecutiveClassName") %>                            <%#Eval("GradeName") %>                            <%#Eval("DepartmentName") %>                            <%#Eval("CollegeName") %>                        

代碼解釋:

  ');">  
解釋:點擊課程複選框(選擇/取消選擇)時,觸發js函數ChooseChkSelectCourse(obj,CourseName)


              
解釋:點擊學生複選框(選擇/取消選擇)時,觸發js函數ChooseChkDSKSelectStu(obj)

js代碼:

var arrayCourseID = new Array();//建立數組,存放選中課程行的課程IDvar arrayCourseIDLength = arrayCourseID.length;//存放選中課程行的數組長度arrayCourseIDLength = 0;var arrayCourseName = new Array();//建立數組,存放選中課程行的課程名稱var arrayCourseNameLength = arrayCourseName.length;//存放選中課程行的數組長度arrayCourseNameLength = 0;var arrayStudentID = new Array();//建立數組,存放選中學生行的學生IDvar arrayStuIDLength = arrayStudentID.length;//存放選中學生行的數組長度arrayStuIDLength = 0;var flag = false;//選中某行課程時,對應的函數function ChooseChkSelectCourse(obj,courseName) {    //1,如果選中了該課程    if (obj.checked) {        var courseID = obj.value;//擷取該行的值(課程ID)        arrayCourseIDLength = arrayCourseIDLength + 1;//存放課程ID的數組長度+1        arrayCourseID[arrayCourseIDLength - 1] = courseID;//將選中行的課程ID放入數組arrayStudentID        arrayCourseNameLength = arrayCourseNameLength + 1;//存放課程名稱的數組長度+1        arrayCourseName[arrayCourseNameLength - 1] = courseName;//將選中課程行的課程名稱加入數組arrayCourseName         }    //1,如果取消選中該課程    if (!obj.checked) {        var cancelCourseID = obj.value;//擷取取消行的課程ID        //迴圈存放選中課程的數組arrayCourseID        for (var i = 0; i < arrayCourseID.length; i++) {            if (arrayCourseID[i] == cancelCourseID) { //如果arrayCourseID[i]的值=取消選中行的課程ID                var count = i; //定義變數count                //迴圈遍曆數組arrayStudentID中第i+1個元素——最後一個元素                for (var j = count; j < arrayCourseID.length; j++) {                    arrayCourseID[j] = arrayCourseID[j + 1];//因為取消了arrayCourseID[i]的值,所以需要將arrayCourseID[i+1]——arrayCourseID[arrayCourseID.length-1]的值往前移                    arrayCourseName[j] = arrayCourseName[j + 1];//因為取消了arrayCourseName[i]的值,所以需要將arrayCourseName[i+1]——arrayCourseName[arrayCourseName.length-1]的值往前移                    var a = arrayCourseID[i];//測試                    a = arrayCourseID[i - 1];                    var b = arrayCourseName[i];//測試                    b = arrayCourseName[i];                }            }        }        arrayCourseIDLength = arrayCourseIDLength - 1;//存放課程ID的數組arrayCourseID長度-1        arrayCourseNameLength = arrayCourseNameLength - 1;//存放課程名稱的數組arrayCourseName的長度-1       }}//選中某行學生時,對應的函數function ChooseChkSelectStu(obj) {   //1,如果選中了該學生    if (obj.checked) {        var valStuID = obj.value;//擷取該行的值(學生ID)        arrayStuIDLength = arrayStuIDLength + 1;//存放學生ID的數組長度+1        arrayStudentID[arrayStuIDLength - 1] = valStuID;//將選中行的學生ID放入數組arrayStudentID    }    //1,如果取消選中該學生    if (!obj.checked) {        var cancelStuID = obj.value;//擷取取消行的學生ID        //迴圈存放選中學生的數組arrayStudentID        for(var i=0;i解釋:原理——以選擇/取消學生為例:

(1)定義全域變數:學生數組、學生數組長度變數

(2)觸發函數ChooseChkSelectStu(obj)時,先判斷是要選擇該學生還是要取消選擇該學生

(3)如果是選擇:學生數組裡添加一個元素,學生數組長度變數-+1

(4)如果是取消選擇:從取消元素位置開始-數組長度,進行迴圈,依次向前賦值,即學生數組[i]=學生數組[i+1]——目的:將取消選擇的學生從數組中刪除,後面的學生向前依次移動;確保既能成功刪除選擇的學生又能確保數組中無空值

總結:很多東西在後台可以實現,同樣在前台也可實現;後台代碼好些,但不能死守陳舊,嘗試新的東西提升會更快;


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.