繁体   English   中英

TypeError:“未定义”不是Javascript中的对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM