我有一段Javascript代码,用于将字符串数组分配给字符串数组。 不幸的是,如果我尝试向数组添加多个字符串,我的UI模拟器(在JS代码上运行)会意外关闭。我试过调试但是找不到任何东西。我正在附上问题的那段代码。也许你们可以找到一些缺陷?在弹出按钮上单击我在UI上选择的值应该存储在数组中,并且我在服务器端有一个corressponding变量来处理这个字符串数组。
_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
});
}
}
答案 0 :(得分:1)
更改
var selectedSolution = [solutionsLength];
到
var selectedSolution = [];
这会使您的数组有一个可能导致崩溃的额外项目。
此外,
你有
if(this._list.listItems[i].selected)
{
selectedSolution[i] = this._list.listItems[i].options.value;
}
但是没有相应的其他内容,所以你的数组有i
的未定义值,它们没有输入if。
也许添加一个空字符串可能会解决它:
if(this._list.listItems[i].selected)
{
selectedSolution[i] = this._list.listItems[i].options.value;
}
else
{
selectedSolution[i] = "";
}
答案 1 :(得分:1)
代码看起来很好,但似乎有一段代码可能导致错误。例如,您要分配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 = [];
希望这可以解决您的问题。
答案 2 :(得分:1)
var selectedSolution = [solutionsLength];
将值保留在selectedSolution变量中。
var selectedSolution = [3];
selectedSolution[0] gives the values as 3
所以说实话吧
var selectedSolution = [];