将vbs转换为js:for each ... in

时间:2015-10-20 01:58:11

标签: javascript asp.net vbscript

我将一些旧的VBScript转换为Javascript有两行,我不知道如何正确转换。这是最初的VBS:

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  ;
 }

我无法弄清楚如何转换的行是&#34;接下来的错误恢复&#34;和#34;对于所有项目中的每个节点&#34;

1 个答案:

答案 0 :(得分:0)

以下是将您的VBS代码转换为JavaScript: 使用try {} catch {}来捕获错误。 在遍历项集合时,您可以使用for循环进行迭代,如下所示,并使用索引属性访问项目。 你还需要使用&#34; return&#34;从函数返回值时的关键字。

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;
}