javascript函数返回" undefine"来自jsp页面

时间:2016-01-06 06:41:14

标签: javascript jsp

我有一个jsp页面并调用JS函数,该函数位于此JSP页面的某些abc.js文件中。 我已将此js文件包含在jsp页面中。

JSP JavaScript代码: -

$names = @()
$getPath = "C:\Temp\get"
$setPath = "C:\Temp\set"
Get-ChildItem $getPath |
    Foreach-object{
    $names += $_
}
$i = 0
Get-ChildItem $setPath |
Foreach-object{
    Rename-Item -Path $_.FullName -NewName $names[$i]
    $i++
}

JS代码: -

function doFinish(tableId, col, field)
{
   var oldselectedCells = "";
   var selItemHandle = "";
   var selRightItemHandle = "";
   var left = -1;
   var right = -1;
   // Get the table (tBody) section
   var tBody = document.getElementById(tableId);
   // get field in which selected columns are stored
   var selectedCellsFld = document.getElementById(tableId + datatableSelectedCells);

   selectedCellsFld.value = oldselectedCells;
   for (var r = 0; r < tBody.rows.length; r++)
   {
      var row = tBody.rows[r];
      if (row.cells[col].childNodes[0].checked == true)
      {
         selectedCellsFld.value = oldselectedCells +
                                 row.cells[col].childNodes[0].id;
         selItemHandle = row.cells[col].childNodes[0].value

         oldselectedCells =  selectedCellsFld.value + datatableOnLoadDivider;

         left = selItemHandle.indexOf("=");
         right = selItemHandle.length;
         selRightItemHandle = selItemHandle.substring(left+1,right);
         var index=getColumnIndex(tBody,"Name");
         if(index!=null)
         {
            if(field == 1)
            {
               window.opener.document.TemplateForm.eds_asbactionscfg_item_handle_child_physpart.value = selRightItemHandle;
               window.opener.document.TemplateForm.ChildPhysicalPart.value = row.cells[index].childNodes[0].innerHTML;
            }
            else if (field == 2)
            {
               window.opener.document.TemplateForm.eds_asbactionscfg_dev_doc_item_handle_name.value = selRightItemHandle;
               window.opener.document.TemplateForm.DeviationObject.value = row.cells[index].childNodes[0].innerHTML;
            }
            else if (field == 3)
            {
               window.opener.document.TemplateForm.eds_asbactionscfg_dev_doc_item_handle_name.value = selRightItemHandle;
               window.opener.document.TemplateForm.DeviationObject.value = row.cells[index].childNodes[0].innerHTML;
            }
         }

      }
   }

   window.close();
}

我用firebug&amp;调试了这段代码。调用function getColumnIndex(tBody,columnName) { var cells = tBody.parentNode.getElementsByTagName('th'); for (var i=0;i<cells.length; i++) { if(cells[i].hasChildNodes()) { if(cells[i].childNodes[0].innerHTML.replace(/(\r\n|\n|\r)/gm ,"").trim() == columnName) { return i; } } } } 函数工作正常,但当它返回调用者时,getColumnIndex(tBody,columnName)索引值为&#34;取消定义&#34;。

建议一些解决方案。

2 个答案:

答案 0 :(得分:0)

getColumnIndex(tBody,columnName)功能正常。 好像它符合条件

 if(cells[i].childNodes[0].innerHTML.replace(/(\r\n|\n|\r)/gm ,"").trim() == columnName)
          {
             return i;
          }

以便它返回一些东西。

但是当你替换它 var index=getColumnIndex(tBody,"Name");以便coulmnName在String中为“Name”。 并且它与任何columnName都不匹配,因此您的条件会出错并且函数不会返回任何内容。

var index=getColumnIndex(tBody,"Name");索引值为“undefine”。

建议在其他条件上并返回一些错误消息:

 if(cells[i].childNodes[0].innerHTML.replace(/(\r\n|\n|\r)/gm ,"").trim() == columnName)
          {
             return i;
          } else{
       // put some error message
       // return null   
}

答案 1 :(得分:0)

  

我用firebug&amp;调试了这段代码。调用getColumnIndex(tBody,columnName)函数可以正常工作

由此,我假设您的getColumnIndex函数的实现没有任何问题,因此获取undefined值的问题必须与有关。 此函数返回一个值。

  

但是当它返回调用者时,var index = getColumnIndex(tBody,“Name”);索引值是“undefine”。

这让我假设你的tBody变量没有正确设置,因为“函数工作正常”。

我假设您的代码中存在无法满足getColumnIndex函数条件的情况。

function getColumnIndex(tBody,columnName)
 {
    var cells = tBody.parentNode.getElementsByTagName('th');     
    for (var i=0;i<cells.length; i++)
    {
       if(cells[i].hasChildNodes())
       {
          if(cells[i].childNodes[0].innerHTML.replace(/(\r\n|\n|\r)/gm ,"").trim() == columnName)
          {
             return i;
          }
       }
    }
    // If your code reaches this point, then the prior conditions have not been met
    // You can choose to do something else here for return false/undefined etc.
    return undefined;
 }