[英]TypeError: 'undefined' is not an object in Javascript
我有一段Java代码,将值字符串分配给字符串数组。 不幸的是,如果我尝试向数组中添加多个字符串,我的UI模拟器(基于JS代码运行)会意外关闭。 我尝试调试,但找不到任何东西。 我在问题所在的位置附加了那段代码。 也许你们会发现一些缺陷? 在弹出按钮上,单击我在UI上选择的值应存储在数组中,并且在服务器端有一个对应的变量来处理此字符串数组。
_popupButtonClick: function (button) {
var solutions = this._stateModel.get('solutionName');
var i;
var solutionsLength = solutions.length;
var selectedSolution = [solutionsLength];
this.clearPopupTimer();
if (button.position === StatusViewModel.ResponseType.Ok) {
for(i=0;i<solutionsLength;i++)
{
if(this._list.listItems[i].selected)
{
selectedSolution[i] = this._list.listItems[i].options.value;
}
}
this._stateModel.save({
selectedsolutions: selectedSolution,
viewResponse: StatusViewModel.ResponseType.Ok
});
} else {
this._stateModel.save({
viewResponse: StatusViewModel.ResponseType.Cancel
});
}
}
更改
var selectedSolution = [solutionsLength];
至
var selectedSolution = [];
这使您的阵列有一个额外的项目,可能会导致崩溃。
也,
你有一个
if(this._list.listItems[i].selected)
{
selectedSolution[i] = this._list.listItems[i].options.value;
}
但是没有其他对应的值,因此您的数组具有未输入if的i
未定义值。
也许添加一个空字符串可能会解决它:
if(this._list.listItems[i].selected)
{
selectedSolution[i] = this._list.listItems[i].options.value;
}
else
{
selectedSolution[i] = "";
}
该代码看起来不错,但似乎有一段代码可能会导致错误。 例如,您要分配var selectedSolution = [solutionsLength];
例如solutionsLength is 5
则循环运行5 times
for(i=0;i<solutionsLength;i++) // runs for 5 times
{
if(this._list.listItems[i].selected)
{
// but selectedSolution = [5]; which is on 0th index and from 1st to 4th index it is undefined
selectedSolution[i] = this._list.listItems[i].options.value;
}
}
因此,您可以尝试像使用push()
selectedSolution.push(this._list.listItems[i].options.value);
并在初始化时将其更改为
var selectedSolution = [];
希望这可以解决您的问题。
var selectedSolution = [solutionsLength];
将值保留在selectedSolution变量中。
var selectedSolution = [3];
selectedSolution[0] gives the values as 3
所以简单一点
var selectedSolution = [];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.