2015-05-21 13 views
1

我有3個功能:initializeDatainitializecartGroupinitializeCartGroupIteminitializeData貫穿給定的表單組,JSON將它們解析爲數據對象。另外兩個「幫手」功能通過個別組和項目進行解析。我需要在輔助函數的數據函數中設置回調,但我不知道如何。有人可以幫我從這裏出去嗎?最終目標是找到包含信息的給定表單上的所有div,將其轉換爲數據對象,然後將其輸出回給定的DOM元素中的頁面。JSON後的回調

function initializeData() { 
    var cartGroups = document.querySelector('.cartGroups'); 
    if (null !== cartGroups) { 
     var data = JSON.parse(cartGroups.innerHTML); 
     data.forEach(function (cartGroup, index) { 
      var group = new cartGroup(); 
      data.forEach(function (cartGroupItem, index) { 
       var item = new cartGroupItem(); 
      }); 
     }); 
    } 
} 

function initializeCartGroup() { 
    var cartGroup = document.querySelector('.cartGroup'); 
    if (null !== cartGroup) { 
     var data = JSON.parse(cartGroup.innerHTML); 
    } 
} 

function initializeCartGroupItem() { 
    var cartGroupItem = document.querySelector('.cartGroupItem'); 
    if (null !== cartGroupItem) { 
     var data = JSON.parse(cartGroupItem.innerHTML); 
    } 
} 
+0

DOM元素的'innerHTML'包含一個字符串值,您將要解析爲JSON?你能告訴我們你正在運行的HTML/DOM嗎?你的'initializeCartGroup'和'initializeGroupItem'函數設置了一個數據變量,但是它什麼都不做,並且無處傳遞它呢? 'initializeCartGroup'和'initializeCartGroupItem'從哪裏調用? cartGroupItem定義在哪裏? –

+0

我知道我會遇到這個問題,我應該詳細闡述。該文件分別依賴於兩個獨立的模塊,組和項目。在組和項目中聲明的數據最終將被使用。 –

回答

-1

下面是一個使用回叫的例子 -

function initializeData(callback) { 
    var cartGroups = document.querySelector('.cartGroups'); 
    if (null !== cartGroups) { 
     var data = JSON.parse(cartGroups.innerHTML); 
     data.forEach(function (cartGroup, index) { 
      var group = new cartGroup(); 
      data.forEach(function (cartGroupItem, index) { 
       var item = new cartGroupItem(); 
      }); 
     }); 
     callback(); 
    } 

} 

當調用init函數 -

initializeData(initializeCartGroup); 

這將運行在foreach循環之後的回調函數initializeCartGroup。

+0

謝謝!很有幫助! –

+0

@JacobBloyd沒問題!請標記爲答案,如果它幫助你:)。 – rayt

+0

你永遠不會執行回調。 'callback;'應該是'callback();' –