我有一个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;。
建议一些解决方案。
答案 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;
}