Uncaught TypeError: Cannot read property 'replace' of null

hungrydee 2017-09-18 01:34:32
formatter : function(value,v,row) {
var res = ' ';
var str='sdfhsdf';
debugger;
if(trim(row.disabled) == '1'){
res = '<input rule="monthlyItems_deductionReason" readonly name="deductionReason_'
+ index + '" class="widthInputLonger" maxlength="200" type="text" value="'
+ (value || "") + '" />';
}else{
str=(row.factorDetail).replace(";","。");;
//alert(str);
res ='<div style="position:relative;"><span style="margin-left:100px;width:19px;overflow:hidden;"> '
+'<select style="width:100%;margin-left:-100px" onchange="this.parentNode.nextSibling.value=this.value"> '
+'<option value="天蓝蓝">天蓝蓝</option><option value="'+str+'">'+str+'</option>'
+'</select></span><input rule="monthlyItems_deductionReason" name="deductionReason_'
+ index + '" class="widthInputLonger" id="deductionReasonInput" maxlength="200" type="text" style="width:88%;position:absolute;left:0px;" value="'
+ (value || "") + '" /></div>';
}
return res;
},
红色部分在运行,使用alert的时候可以弹出,但是会出现如下错误:
Uncaught TypeError: Cannot read property 'replace' of null
at HTMLTableElement.formatter (input.do?id=1F366563E85B47DD9E5B802BEE4DDAFE:162)
at x (jquery.jqGrid.min.js:50)
at G (jquery.jqGrid.min.js:50)
at Y (jquery.jqGrid.min.js:66)
at Object.success (jquery.jqGrid.min.js:81)
at fire (jquery-1.11.1.js:3119)
at Object.fireWith [as resolveWith] (jquery-1.11.1.js:3231)
at done (jquery-1.11.1.js:9275)
at XMLHttpRequest.callback (jquery-1.11.1.js:9685)
在线等,这是什么原因,该如何解决
...全文
1785 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2017-09-18
  • 打赏
  • 举报
回复
多学下js基础,||就是前面的值为false或者等价于false的值取后面的来填充,这样undefined,null就会替换为空字符串,在replace就不会出错了,当然前提是这个属性值一定要为字符串 javascript判断中为假false的值
hungrydee 2017-09-18
  • 打赏
  • 举报
回复
@showbo str=row.factorDetail||''看不懂这个,刚进公司的菜鸟,老大让我改改这部分的代码,结果出现这个问题了,让我百度
Go 旅城通票 2017-09-18
  • 打赏
  • 举报
回复
str=row.factorDetail||''
hungrydee 2017-09-18
  • 打赏
  • 举报
回复
@
引用 5 楼 showbo 的回复:
[quote=引用 4 楼 qq_29466351 的回复:] @showbo 考虑到不是数组的可能性了,结果使用str=row.factorDetail.toString();的还是报错出现 Uncaught TypeError: Cannot read property 'toString' of null at HTMLTableElement.formatter (input.do?id=1F366563E85B47DD9E5B802BEE4DDAFE:162) at x (jquery.jqGrid.min.js:50) at G (jquery.jqGrid.min.js:50) at Y (jquery.jqGrid.min.js:66) at Object.success (jquery.jqGrid.min.js:81) at fire (jquery-1.11.1.js:3119) at Object.fireWith [as resolveWith] (jquery-1.11.1.js:3231) at done (jquery-1.11.1.js:9275) at XMLHttpRequest.callback (jquery-1.11.1.js:9685) 这个错误,行数据有factorDetail这个属性结果还是有错误,
那就是你数据肯定有丢失factorDetail属性的了,toString都报错肯定就是某些行这个属性丢失了,没什么好说的,只有undefined,null调用toString才会报错[/quote] 那这时候应该怎么解决,或者使用哪种方法可以找那些行丢失这个属性了,
Go 旅城通票 2017-09-18
  • 打赏
  • 举报
回复
引用 4 楼 qq_29466351 的回复:
@showbo 考虑到不是数组的可能性了,结果使用str=row.factorDetail.toString();的还是报错出现 Uncaught TypeError: Cannot read property 'toString' of null at HTMLTableElement.formatter (input.do?id=1F366563E85B47DD9E5B802BEE4DDAFE:162) at x (jquery.jqGrid.min.js:50) at G (jquery.jqGrid.min.js:50) at Y (jquery.jqGrid.min.js:66) at Object.success (jquery.jqGrid.min.js:81) at fire (jquery-1.11.1.js:3119) at Object.fireWith [as resolveWith] (jquery-1.11.1.js:3231) at done (jquery-1.11.1.js:9275) at XMLHttpRequest.callback (jquery-1.11.1.js:9685) 这个错误,行数据有factorDetail这个属性结果还是有错误,
那就是你数据肯定有丢失factorDetail属性的了,toString都报错肯定就是某些行这个属性丢失了,没什么好说的,只有undefined,null调用toString才会报错
hungrydee 2017-09-18
  • 打赏
  • 举报
回复
@showbo 考虑到不是数组的可能性了,结果使用str=row.factorDetail.toString();的还是报错出现 Uncaught TypeError: Cannot read property 'toString' of null at HTMLTableElement.formatter (input.do?id=1F366563E85B47DD9E5B802BEE4DDAFE:162) at x (jquery.jqGrid.min.js:50) at G (jquery.jqGrid.min.js:50) at Y (jquery.jqGrid.min.js:66) at Object.success (jquery.jqGrid.min.js:81) at fire (jquery-1.11.1.js:3119) at Object.fireWith [as resolveWith] (jquery-1.11.1.js:3231) at done (jquery-1.11.1.js:9275) at XMLHttpRequest.callback (jquery-1.11.1.js:9685) 这个错误,行数据有factorDetail这个属性结果还是有错误,
Go 旅城通票 2017-09-18
  • 打赏
  • 举报
回复
你确认是字符串而不是数组,数组alert调用默认的join也是返回字符串的,但是数组没有replace方法。加toString转为字符串 str=row.factorDetail.toString();
hungrydee 2017-09-18
  • 打赏
  • 举报
回复
@showbo 我alert((row.factorDetail)的时候是有结果的,字符串 $("#grid").jqGrid({ url : "${ctx}/performanceAssessmentMonthlyAssessment/getExistsMonthlyAssessmentItem.do", postData : { id : "${param.id}" }, datatype : "json", mtype : 'post', colNames : [ "ID", "指标类别", "指标名称", "评估要素", "分值", "自评得分", "扣分理由", "整改要求", "考评得分" ], colModel : [ { name : "id", hidden : true, sortable : false }, { name : "categoryName", align : "left", width : 45, cellattr : cellattr1, sortable : false }, { name : "indicatorName", align : "left", width : 45, cellattr : cellattr2, sortable : false }, { name : "factorDetail" align : "left", width : 200, sortable : false }, { name : "factorScore", align : "center", width : 20, sortable : false }, { name : "selfScore", align : "center", width : 20, sortable : false }, { name : "deductionReason", align : "left", width : 50, formatter : function(value,v,row) { var res = ' '; var str='sdfhsdf'; debugger; if(trim(row.disabled) == '1'){ res = '<input rule="monthlyItems_deductionReason" readonly name="deductionReason_' + index + '" class="widthInputLonger" maxlength="200" type="text" value="' + (value || "") + '" />'; }else{ str=row.factorDetail; //alert(str); res ='<div style="position:relative;"><span style="margin-left:100px;width:19px;overflow:hidden;"> ' +'<select style="width:100%;margin-left:-100px" onchange="this.parentNode.nextSibling.value=this.value"> ' +'<option value="天蓝蓝">天蓝蓝</option><option value="'+str+'">'+str+'</option>' +'</select></span><input rule="monthlyItems_deductionReason" name="deductionReason_' + index + '" class="widthInputLonger" id="deductionReasonInput" maxlength="200" type="text" style="width:88%;position:absolute;left:0px;" value="' + (value || "") + '" /></div>'; } return res; }, sortable : false } 这种情况的时候石油字符串出现的
Go 旅城通票 2017-09-18
  • 打赏
  • 举报
回复
str=(row.factorDetail).replace(";","。");; 说明你的row对象没有factorDetail属性,自己认真检查数据行包含什么属性,对象属性时区分大小写的

Web开发学习资料推荐
easyui datebox只显示年月选择,隐藏日期
JavaScript apply与call的用法

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧