2015-10-20 46 views
1

我把一些舊的VBScript爲Javascript有兩條線,我不知道如何正確地轉換。原來這裏是VBS:轉換VBS到JS:對於每個...在

function getCount() 
     on error resume next 
     dim allitems, strItemID, icnt 
     icnt = 0 
     set allitems = dsoITEMS.selectNodes("//item") 
     for each node in allitems 
      strItemID = node.selectsinglenode("item_id").firstchild.nodevalue 
      if err then 
       exit for 
      end if 
      if strItemID <> "" then 
       icnt = icnt + 1 
      end if 
     next 
     set nodes = nothing 
     getCount = icnt  
end function 

這裏是JS我到目前爲止:

function getCount(){ 
    on error resume next; 
    var allitems, strItemID, icnt; 
    icnt = 0; 
    allitems = dsoITEMS.selectNodes("//item"); 
    for each node in allitems; 
    strItemID = node.selectsinglenode("item_id").firstchild.nodevalue; 
    if(err){ 
    exit for; 
    } 
    if(strItemID != ""){ 
    icnt = icnt + 1; 
    } 
    next; 
    nodes = null; 
    getCount = icnt ; 
} 

我無法弄清楚如何轉換線「上的錯誤繼續下一步」和「在allitems每個節點」

+0

'try {janky code here} catch(y){console.error(y); }' – dandavis

+0

任何想法在allitems線的每個節點做一下呢? – dyr808

回答

0

這裏有一個轉換的VBS代碼到JavaScript: 使用try {}趕上{}捕獲錯誤。 當通過項目的集合迭代,您可以遍歷使用for循環如下圖所示,使用索引屬性來訪問的項目。 另外你需要使用「返回」關鍵字時,返回值形成的函數。

function getCount() { 
    var allitems, strItemID, icnt; 
    icnt = 0; 
    try { 
     allitems = dsoITEMS.selectNodes("//item"); 
     for(var i = 0; i<= allitems.length; i++){ 
      var node = allitems[i]; 
      strItemID = node.selectsinglenode("item_id").firstchild.nodevalue; 
      if (strItemID !== ""){ 
       icnt = icnt + 1; 
      } 
     } 
    } 
    catch (ex){ 
     //Do something with the errors (if you want) 
    } 

    return icnt; 
} 
+0

謝謝!它完美地工作 – dyr808