IE9中的Javascript错误 [英] Javascript error in IE9

查看:86
本文介绍了IE9中的Javascript错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面的函数中我得到了错误

Microsoft JScript运行时错误:无法获取属性value的值:object为null或undefined;

注意:以下代码在除IE9之外的所有IE浏览器中都能正常工作。







In the below function i got error
Microsoft JScript runtime error: Unable to get value of the property "value": object is null or undefined;
Note: The below code is working fine in all IE browsers except IE9.



for (loopIndex1 = 1; loopIndex1 < rowCount; loopIndex1++) {
            if (loopIndex1 < 8)
                saleplanTextIndex = "ctl00_Body_PlannerDetailsGV_ctl0" + parseInt(loopIndex1 + 2) + "_" + loopIndex1 + "salesplanTextID" + eleIndex;
            else
                saleplanTextIndex = "ctl00_Body_PlannerDetailsGV_ctl" + parseInt(loopIndex1 + 2) + "_" + loopIndex1 + "salesplanTextID" + eleIndex;

            //document.getElementById(saleplanTextIndex).value
            if (document.getElementById(saleplanTextIndex).value == "") {
                document.getElementById(saleplanTextIndex).value = 0;
            }
            colSum = colSum + parseInt(document.getElementById(saleplanTextIndex).value);
        }

推荐答案

document.getElementById 中的字符串参数必须使用引号。



由于变量声明的隐式性质,JavaScript不会立即显示异常。这个案子很有趣。首先,像 saleplanTextIndex 这样的名称(不带引号)作为非初始化变量处理,有效。然后,自然 document.getElementById 返回未定义的对象(即使你的参数是一个有效的字符串,但是<$ $,它总是在找不到HTML DOM元素时发生)找不到c $ c> id ,然后才尝试使用其(不存在的)属性值取消引用未定义或空对象抛出异常。



执行此修复后,如果 id ,您仍会遇到同样的问题找不到元素,因此请确保使用 id 属性值正确唯一地标识您要查找的元素。



-SA
The string argument in document.getElementById must be in quotation marks.

The exception is not revealed by JavaScript immediately due to implicit nature of variable declarations. The case is kind of funny. First, the name like saleplanTextIndex (without quotation marks) is handled as a non-initialized variable, valid as such. Than, naturally document.getElementById returns undefined object (which always takes place when the HTML DOM element is simply not found, even if your argument was a valid string, but the id is not found), and only then the attempt to dereference the undefined or null object by using its (non-existent) property value throws the exception.

After you do this fix, you will still have the same problem if id of the element is not found, so make sure the elements you are looking for are properly and uniquely identified with their id attribute values.

—SA


这是我的完整功能:



函数SummationSalesPlan (rowIDs){

var loopIndex1 = 0;

var uspreplySum = 0;

var salesplanSum = 0;

var agentSum = 0;

var eleName =;

var rowCount = rowIDs.split(''|'')[rowIDs.split(''|'')。length - 1];

var eleIndex = rowIDs.split(''|' ')[rowIDs.split(''|'')。length - 2]; //给出当前列

var restSum = rowIDs.split(''|'')[rowIDs.split(''|'')。length - 3];

var colSum = 0;

var saleplanTextIndex =;

document.getElementById(ctl00_Body_IsTermUpdated)。value = 1;



for(loopIndex1 = 1; loopIndex1< rowCount; loopIndex1 ++){

if(loopIndex1< 8)

saleplanTextIndex =ctl00_Body_PlannerDetailsGV_ctl0 + parseInt(loopIndex1 + 2)+_+ loopIndex1 +salesplanTextID+ eleIndex;

else

saleplanTextIndex =ctl00_Body_PlannerDetailsGV_ctl+ parseInt(loopIndex1 + 2)+ _+ loopIndex1 +salesplanTextID+ eleIndex;



//document.getElementById(saleplanTextIndex).value

if(document。 getElementById(saleplanTextIndex).value ==){

document.getEl ementById(saleplanTextIndex).value = 0;

}

colSum = colSum + parseInt(document.getElementById(saleplanTextIndex).value);

}

// ctl00_Body_PlannerGV_ctl04_2textID14

// alert(ctl00_Body_PlannerGV_ctl04_2textID+ eval(eleIndex - 1));



uspreplySum = document.getElementById(ctl00_Body_PlannerGV_ctl04_2textID+ eval(eleIndex - 1))。innerText; // USP回复

document.getElementById(ctl00_Body_PlannerGV_ctl05_3lblID+ eval(eleIndex - 1))。innerText = colSum; //销售计划

salesplanSum = colSum;



if(isNaN(parseInt(uspreplySum))== true)

uspreplySum = 0;

if(isNaN(parseInt(salesplanSum))== true)

salesplanSum = 0;

if(b) isNaN(parseInt(document.getElementById(ctl00_Body_PlannerGV_ctl06_4lblID+ eval(eleIndex - 1))。innerText))== true)

document.getElementById(ctl00_Body_PlannerGV_ctl06_4lblID+ eval(eleIndex - 1)) .innerText = 0; // Diff值



if(document.getElementById(ctl00_Body_PlannerGV_ctl04_2textID+ eval(eleIndex - 1))。disabled == true){

//document.getElementById(\"ctl00_Body_PlannerGV_ctl04_2textID+ eval(eleIndex - 1))。value = parseInt(document.getElementById(ctl00_Body_PlannerGV_ctl06_4lblID+ eval(eleIndex - 1))。innerText)+ parseInt( salesplanSum); //差异

document.getElementById(ctl00_Body_PlannerGV_ctl04_2textID+ eval(eleIndex - 1))。value = salesplanSum;

}



document.getElementById(ctl00_Body_PlannerGV_ctl06_4lblID+ eval(eleIndex - 1))。innerText = parseInt(document.getElementById(ctl00_Body_PlannerGV_ctl04_2textID+ eval(eleIndex - 1))。value) - parseInt(salesplanSum);



//其他

// document.getElementById(ctl00_Body_PlannerGV_ctl06_4lblID+ eval(eleIndex - 1))。innerText = parseInt(salesplanSum) );



//在六个月内计算特定代理商的T-条款。

for(loopIndex1 = 1; loopIndex1< rowIDs。 split(''|'')。length - 3; loopIndex1 ++){

if(isNaN(parseInt(document.getElementById(rowIDs.split(''|'')[loopIndex1])。value ))== true)

document.getElementById(rowIDs.split('' |'')[loopIndex1])。value = 0;



agentSum = parseInt(agentSum)+ parseInt(document.getElementById(rowIDs.split('''|' ')[loopIndex1])。value);

}



agentSum = parseInt(restSum)+ parseInt(agentSum);

document.getElementById(rowIDs.split(''|'')[0])。innerText = agentSum;



SumSalesTerm();

}
Here is my complete function:

function SummationSalesPlan(rowIDs) {
var loopIndex1 = 0;
var uspreplySum = 0;
var salesplanSum = 0;
var agentSum = 0;
var eleName = "";
var rowCount = rowIDs.split(''|'')[rowIDs.split(''|'').length - 1];
var eleIndex = rowIDs.split(''|'')[rowIDs.split(''|'').length - 2]; //Gives the current column
var restSum = rowIDs.split(''|'')[rowIDs.split(''|'').length - 3];
var colSum = 0;
var saleplanTextIndex = "";
document.getElementById("ctl00_Body_IsTermUpdated").value = 1;

for (loopIndex1 = 1; loopIndex1 < rowCount; loopIndex1++) {
if (loopIndex1 < 8)
saleplanTextIndex = "ctl00_Body_PlannerDetailsGV_ctl0" + parseInt(loopIndex1 + 2) + "_" + loopIndex1 + "salesplanTextID" + eleIndex;
else
saleplanTextIndex = "ctl00_Body_PlannerDetailsGV_ctl" + parseInt(loopIndex1 + 2) + "_" + loopIndex1 + "salesplanTextID" + eleIndex;

//document.getElementById(saleplanTextIndex).value
if (document.getElementById(saleplanTextIndex).value == "") {
document.getElementById(saleplanTextIndex).value = 0;
}
colSum = colSum + parseInt(document.getElementById(saleplanTextIndex).value);
}
//ctl00_Body_PlannerGV_ctl04_2textID14
//alert("ctl00_Body_PlannerGV_ctl04_2textID" + eval(eleIndex - 1));

uspreplySum = document.getElementById("ctl00_Body_PlannerGV_ctl04_2textID" + eval(eleIndex - 1)).innerText; //USP Reply
document.getElementById("ctl00_Body_PlannerGV_ctl05_3lblID" + eval(eleIndex - 1)).innerText = colSum; //Sales Plan
salesplanSum = colSum;

if (isNaN(parseInt(uspreplySum)) == true)
uspreplySum = 0;
if (isNaN(parseInt(salesplanSum)) == true)
salesplanSum = 0;
if (isNaN(parseInt(document.getElementById("ctl00_Body_PlannerGV_ctl06_4lblID" + eval(eleIndex - 1)).innerText)) == true)
document.getElementById("ctl00_Body_PlannerGV_ctl06_4lblID" + eval(eleIndex - 1)).innerText = 0;//Diff Value

if (document.getElementById("ctl00_Body_PlannerGV_ctl04_2textID" + eval(eleIndex - 1)).disabled == true) {
//document.getElementById("ctl00_Body_PlannerGV_ctl04_2textID" + eval(eleIndex - 1)).value = parseInt(document.getElementById("ctl00_Body_PlannerGV_ctl06_4lblID" + eval(eleIndex - 1)).innerText) + parseInt(salesplanSum); //Diff
document.getElementById("ctl00_Body_PlannerGV_ctl04_2textID" + eval(eleIndex - 1)).value = salesplanSum;
}

document.getElementById("ctl00_Body_PlannerGV_ctl06_4lblID" + eval(eleIndex - 1)).innerText = parseInt(document.getElementById("ctl00_Body_PlannerGV_ctl04_2textID" + eval(eleIndex - 1)).value) - parseInt(salesplanSum);

// else
// document.getElementById("ctl00_Body_PlannerGV_ctl06_4lblID" + eval(eleIndex - 1)).innerText = parseInt(salesplanSum);

//Calculate T-Terms for particular agent in six months.
for (loopIndex1 = 1; loopIndex1 < rowIDs.split(''|'').length - 3; loopIndex1++) {
if (isNaN(parseInt(document.getElementById(rowIDs.split(''|'')[loopIndex1]).value)) == true)
document.getElementById(rowIDs.split(''|'')[loopIndex1]).value = 0;

agentSum = parseInt(agentSum) + parseInt(document.getElementById(rowIDs.split(''|'')[loopIndex1]).value);
}

agentSum = parseInt(restSum) + parseInt(agentSum);
document.getElementById(rowIDs.split(''|'')[0]).innerText = agentSum;

SumSalesTerm();
}


这篇关于IE9中的Javascript错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆