2016-11-21 11 views
-2

私は、アイテムのリストで.each()を実行していて、それらのアイテムを自分のHTMLに分類しています。それ以降の関数では、チェックされているアイテム(チェックボックス)をチェックしています。私の関数(prepareTrainings();)では、どのボックスがチェックされているかを調べるために、.each()の結果からデータを表示する必要があります。基本的に、ユーザーがXチェックボックスをチェックした場合、その項目のコース名とURLを表示してください....each()内で一意のオブジェクトを動的に作成するにはどうすればよいですか?

私の質問:ベストプラクティスは何か分かりません。 if(trainingGroupなど)文の中にこれらの値を格納するオブジェクトを作成する必要がありますか?グローバルvarであなたの処理されたオブジェクトを維持

$.ajax({ 
url: "mySite", 
type: "GET", 
headers: { "ACCEPT": "application/json;odata=verbose" }, 
success: function(data){ 
    $.each(data.d.results, function(index) { 
    var $this = $(this); 
    var courseName = $this.attr('Title'); 
    var courseNumber = $this.attr('Course_x0020_Number'); 
    var courseUrl = $this.attr('URL'); 
    var trainingGroup = $this.attr('Training_x0020_Group'); 
    var recurrence = $this.attr('Recurrence'); 

    var dynCourseId = courseName.replace(/\s+/g, '') 

     if (trainingGroup == 'Group1') { 
      if (recurrence == "Don't Specify") {recurrence = ''; 
      } else recurrence = " ("+recurrence+")"; 
      document.getElementById('officeListSpan').innerHTML += '<ul class="courseLists"><li><input type="checkbox" id="'+dynCourseId+'"/>'+courseName+recurrence+'</li></ul>'; 
     } 
     if (trainingGroup == 'Group2') { 
      if (recurrence == "Don't Specify") {recurrence = ''; 
      } else recurrence = " ("+recurrence+")"; 
      document.getElementById('labListSpan').innerHTML += '<ul class="courseLists"><li><input type="checkbox" id="'+dynCourseId+'"/>'+courseName+recurrence+'</li></ul>'; 
     } 
    }); 
    }, 
    error: function(){ 
    alert("Failed to query SharePoint list data. Please refresh (F5)."); 
    } 
}); 
function prepareTrainings() { 
var idSelector = function() { 
    return this.id; 
}; 
var checkedCourses = $(":checkbox:checked").map(idSelector).get(); 
    alert("IDs for Courses Selected: " + checkedCourses); 

}

答えて

0

は理にかなっています。例:そのようなオブジェクト:

あなた .each機能で次に
var courses = {}; 

、すでにやるようなあなたのHTML要素から情報を抽出し、別のオブジェクトの各結果を格納:

$.each(data.d.results, function(index) { 
    var $this = $(this); 
    var course = {}; //Create empty object 


    course.name = $this.attr('Title'); 
    course.number = $this.attr('Course_x0020_Number'); 
    course.url = $this.attr('URL'); 
    course.trainingGroup = $this.attr('Training_x0020_Group'); 
    course.recurrence = $this.attr('Recurrence'); 
    course.id = course.name.replace(/\s+/g, '') 

    //Store your course by id in the courses object 
    courses[course.id] = course; 

    //... 

その後のチェックボックスであるかをチェックしますチェックし、あなたはそうのような各コースの情報を取得できます。

var checkedIDs = $(":checkbox:checked").map(idSelector).get(); 
var course = courses[checkedIDs[0]]; //fetches the first selected course 

//Now you can do whatever with the data, like print lists... 
(...).innerHTML += '<ul class="courseLists"><li><input type="checkbox" id="'+course.id+'"/>'+course.name+course.recurrence+'</li></ul>'; 

をコメントを残していない場合、私は、私が正しくあなたの質問を理解したいと考えています。

+0

それは機能しました!私は今朝あなたの反応を非常にはっきりと読んではいけません。しかし、これは動作します。ありがとう、トン! – Ryan

+0

問題はありません:)これは他者の正解としてください。 –

+0

私はまだstackoverflowのその部分に新しいです。どうすればいいのですか?私はあなたに "upvote"する方法を探していました。もう一度お礼してください、あなたは本当に助けて! – Ryan

関連する問題