Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
元素的值被JavaScript更改了两次_Javascript - Fatal编程技术网

元素的值被JavaScript更改了两次

元素的值被JavaScript更改了两次,javascript,Javascript,因此,我正在开发一个统计应用程序,并大量使用各种功能来简化它。因为不同的位置有相似的统计数据,然后是不同的统计数据,比如触地得分。在四分卫区工作,因为在那之后是重复。问题是。。。当我第一次点击一个属性时,比如说触地得分,效果很好。我用我的背箭,去让我们说完成,它仍然工作良好。然后我有一个“下一步”按钮,因为不是每个玩家都可以同时显示。它加载了正确的东西,但随后改变了状态,我不知道为什么。如果我尝试另一个属性,当我单击next时,它会更改两次,所以我假设这是一个循环错误 我试着查看代码并询问Red

因此,我正在开发一个统计应用程序,并大量使用各种功能来简化它。因为不同的位置有相似的统计数据,然后是不同的统计数据,比如触地得分。在四分卫区工作,因为在那之后是重复。问题是。。。当我第一次点击一个属性时,比如说触地得分,效果很好。我用我的背箭,去让我们说完成,它仍然工作良好。然后我有一个“下一步”按钮,因为不是每个玩家都可以同时显示。它加载了正确的东西,但随后改变了状态,我不知道为什么。如果我尝试另一个属性,当我单击next时,它会更改两次,所以我假设这是一个循环错误

我试着查看代码并询问Reddit。没有答复

var Players = [];
var list = [];
var count = 0;

// So the code below organizes players by stats. 
// For example, if you call touchdowns, it'll organize from most touchdowns to lowest.
function myFunction(Position, Stat, startingpoint, endingpoint) {
  readRecords(Position, {}, function(records) {
    var temp = 0;
    var name = "";
    for (var i = 0; i < records.length; i++) {
      for (var j = i + 1; j < records.length; j++) {
        if ((records[i])[Stat] < records[j][Stat]) {
          temp = records[i][Stat];
          name = records[i].Player;
          (records[i])[Stat] = (records[j])[Stat];
          records[i].Player = records[j].Player;
          records[j][Stat] = temp;
          records[j].Player = name;
        }
      }
      insertItem(Players, i, (records[i]).Player + " : " + (records[i])[Stat] + " " + Stat + "\n");
    }
    for (var k = startingpoint; k < endingpoint; k++) {
      appendItem(list, Players[k]);
      var x = list.join(" ");
    }

    setText("label2", x);
    for (var l = endingpoint; l >= startingpoint; l--) {
      removeItem(list, Players[l]);
    }
  });

}

// So I made this part cause I thought let's say I had 60 players, and 20 players per page. 
// How would the program know if I wanna see players 0-20 or 20-40 if I click previous? 
// It's to organize that based on a count variable that changes when you click back and forward.
onEvent("button1", "click", function() {
    count = count + 1;
});

onEvent("button2", "click", function() {
    count = count - 1;
});

// And this was supposed to call back my original function to organize stats when I click the next or previous button. 
// Guess this is where my problem is.
function callback(Stats) {
    count = 0;
    setText("label2", "");
    onEvent("button1", "click", function() {
        if (count == 1) {
            myFunction("Quarterbacks", Stats, 40, 69);
        }
    });

    onEvent("button2", "click", function() {
        if (count == 0) {
            myFunction("Quarterbacks", Stats, 0, 40);
        }
    });
}

// Quarterback stats
onEvent("QuarterBackmenu", "change", function() {
    setScreen("OffenseStatScreen");

    if (getText("QuarterBackmenu") == "Touchdowns") {
        setText("label2", "");
        myFunction("Quarterbacks", "Touchdowns", 0, 40);
        setText("QuarterBackmenu", "Quarterback");
        callback("Touchdowns");
    } else if ((getText("QuarterBackmenu") == "Completions")) {
        setText("label2", "");
        myFunction("Quarterbacks", "Completions", 0, 40);
        setText("QuarterBackmenu", "Quarterback");
        callback("Completions");
    }
});
var玩家=[];
var列表=[];
var计数=0;
//所以下面的代码按统计数据组织玩家。
//例如,如果您调用触地得分,它将从大多数触地得分到最低得分。
函数myFunction(位置、状态、起点、终点){
readRecords(位置,{},函数(记录){
var-temp=0;
var name=“”;
对于(var i=0;i=startingpoint;l--){
移除项目(列表,玩家[l]);
}
});
}
//所以我做了这个部分,因为我想假设我有60名玩家,每页20名玩家。
//如果我单击“上一步”,程序如何知道我想看到0-20或20-40的玩家?
//它是基于一个计数变量来组织的,当您单击“后退”和“前进”时,该变量会发生变化。
OneEvent(“按钮1”,“单击”,函数(){
计数=计数+1;
});
OneEvent(“按钮2”,“单击”,函数(){
计数=计数-1;
});
//当我点击下一个或上一个按钮时,它应该调用我原来的函数来组织统计数据。
//我想这就是我的问题所在。
函数回调(Stats){
计数=0;
setText(“label2”和“);
OneEvent(“按钮1”,“单击”,函数(){
如果(计数=1){
我的职能(“四分卫”,统计数字,40,69);
}
});
OneEvent(“按钮2”,“单击”,函数(){
如果(计数=0){
我的职能(“四分卫”,统计数字,0,40);
}
});
}
//四分卫数据
OneEvent(“四分卫菜单”,“更改”,函数(){
设置屏幕(“犯罪状态屏幕”);
如果(getText(“四分卫菜单”)=“触地得分”){
setText(“label2”和“);
我的职能(“四分卫”,“触地得分”,0,40);
setText(“四分卫菜单”、“四分卫”);
回调(“触地”);
}else if((getText(“四分卫菜单”)=“完成”)){
setText(“label2”和“);
我的功能(“四分卫”,“完成”,0,40);
setText(“四分卫菜单”、“四分卫”);
收回(“完成”);
}
});
所以我希望它能按顺序显示正确的统计数据。当我第一次选择四分卫的数据时,它是有效的。我选择另一个,它工作,但当我点击下一步,它显示正确的统计,但很快改变?如果我再试一次,它会改变两次吗? 这里有一个链接,可以使用我的程序并查看。所以进入进攻,四分卫,选择一个属性,使用后退箭头,检查另一个属性,然后单击下一步


每次调用函数
callback
时,您都在添加其他事件处理程序

function callback(Stats) {
    count = 0;
    setText("label2", "");
    onEvent("button1", "click", function( ) {
        if (count == 1) {
            myFunction("Quarterbacks", Stats, 40, 69);
        }
    });

    onEvent("button2", "click", function( ) {
        if (count == 0) {
            myFunction("Quarterbacks", Stats, 0, 40);
        }
    });
}
您可能只需要将
onEvent
处理程序移到该函数之外,并以某种方式将统计信息传递给它:

var Stats;

function callback(stats) {
    count = 0;
    setText("label2", "");
    Stats = stats
}

onEvent("button1", "click", function( ) {
    if (count == 1) {
        myFunction("Quarterbacks", Stats, 40, 69);
    }
});

onEvent("button2", "click", function( ) {
    if (count == 0) {
        myFunction("Quarterbacks", Stats, 0, 40);
    }
});

每次调用函数
callback
时,都会添加额外的事件处理程序

function callback(Stats) {
    count = 0;
    setText("label2", "");
    onEvent("button1", "click", function( ) {
        if (count == 1) {
            myFunction("Quarterbacks", Stats, 40, 69);
        }
    });

    onEvent("button2", "click", function( ) {
        if (count == 0) {
            myFunction("Quarterbacks", Stats, 0, 40);
        }
    });
}
您可能只需要将
onEvent
处理程序移到该函数之外,并以某种方式将统计信息传递给它:

var Stats;

function callback(stats) {
    count = 0;
    setText("label2", "");
    Stats = stats
}

onEvent("button1", "click", function( ) {
    if (count == 1) {
        myFunction("Quarterbacks", Stats, 40, 69);
    }
});

onEvent("button2", "click", function( ) {
    if (count == 0) {
        myFunction("Quarterbacks", Stats, 0, 40);
    }
});

似乎有很多代码缺失,但综上所述,我可以看到一个反模式,这可能是问题的根源:

function callback(Stats) {

    count = 0;
    setText("label2", "");

    onEvent("button1", "click", function() {
        if (count == 1) {
            myFunction("Quarterbacks", Stats, 40, 69);
        }
    });

    onEvent("button2", "click", function() {
        if (count == 0) {
            myFunction("Quarterbacks", Stats, 0, 40);
        }
    });
}
每次调用
回调
函数时,它都会为
按钮1
按钮2
创建两个全新的事件处理程序。您在代码中多次调用
callback
,因此当程序运行时,您可能会遇到数百个这样的处理程序,它们都在努力运行
myFunction(“四分之一…”

但是代码也有其他问题。根据函数应该做什么来命名函数对您来说是一个很好的练习。例如,我不知道
myFunction
callback
做什么

首先,写一个小的规范文档,简要概述程序的每个部分应该做什么。从这里你可以确定要编写哪些函数,应该调用哪些函数,以及在程序生命周期的什么时候


我觉得到目前为止,代码一直在有机地增长,没有任何组织。这没什么错,但也许是时候给它添加一些结构和规则了。

似乎缺少很多代码,但浏览一下,我可以看到一个反模式,它可能是您问题的根源:

function callback(Stats) {

    count = 0;
    setText("label2", "");

    onEvent("button1", "click", function() {
        if (count == 1) {
            myFunction("Quarterbacks", Stats, 40, 69);
        }
    });

    onEvent("button2", "click", function() {
        if (count == 0) {
            myFunction("Quarterbacks", Stats, 0, 40);
        }
    });
}
每次调用
callback
函数时,它都会为
button1
button2
创建两个全新的事件处理程序。您在代码中多次调用
callback
,因此当程序运行时,您可能会遇到数百个这样的处理程序,它们都在努力运行
myFunction(“季度…

但是那里