javascript - jquery 无法设置变量

标签 javascript jquery function variables

我有一个代码,从数据库获取信息后,它应该将变量 newcolorid 设置为从数据库获取的 id。正如你所看到的,我在函数之前定义了变量,但是在设置新的 id 之后,它仍然保持不变。基本上在控制台中我看到了新的 id,但是在函数完成后,它会将其恢复为 0。可能是什么问题?

var newcolorid = 0;

$.ajax({
    url: "/colors",
    dataType: "json",
    success: function(data) {
        var newcolors = [];
        jQuery.each(data.colors, function (i, elem){
            newcolors.push([elem.color_code, elem.label, elem.id]);
        });
        for(var i=0;i<newcolors.length;i++){
            if(newcolors[i][1]==label){
                newcolorid = newcolors[i][2];
                console.log(newcolorid);
                break;
            }
        }
    }
});

for (var i = 0; i < spectrums.length; i++) {
    if (spectrums[i]) {
        var spectrumPalette = spectrums[i].option("palette");
        spectrumPalette.push([[rgb, label, newcolorid]]);
        spectrums[i].option("palette", spectrumPalette);
    }
}

最佳答案

这是因为你的循环是在后端返回值之前执行的,所以当它运行时,值没有改变。

后端调用是异步的(除非另有设置),这意味着它们不会阻止脚本其余部分的执行,并在收到后端回复时执行。

如果您想使用新值或将该代码移动到从成功回调调用的函数中,则需要将代码移动到成功回调中。

var newcolorid = 0;

$.ajax({
    url: "/colors",
    dataType: "json",
    success: function(data) {

        var newcolors = [];

        jQuery.each(data.colors, function (i, elem){
            newcolors.push([elem.color_code, elem.label, elem.id]);
        });

        for(var i = 0; i<newcolors.length; i++){
            if(newcolors[i][1]==label){
                newcolorid = newcolors[i][2];
                console.log(newcolorid);
                break;
            }
        }

        for (i = 0; i < spectrums.length; i++) {
            if (spectrums[i]) {
                var spectrumPalette = spectrums[i].option("palette");
                spectrumPalette.push([[rgb, label, newcolorid]]);
                spectrums[i].option("palette", spectrumPalette);
            }
        }
    }
});

关于javascript - jquery 无法设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31608859/

相关文章:

Javascript:检索数组中最近插入的元素

javascript - 未定义索引 : name while processing this AJAX Code

python - (代码)OpenERP v7中product.product中的id是什么?

excel - IF Function : if either 1, 2, 3, 4, 5 然后复制到另一张纸

function - XQuery 函数命名空间如何工作?

javascript - 如何使用 react 导航从标题中的按钮将 `navigate` 转到新屏幕?

javascript - pdf.js 中的错误 : Unknown action from worker: undefined at Worker. MessageHandler._onComObjOnMessage

javascript - 在 Jquery Mobile 中通过单选按钮显示隐藏列表

jquery - 使用 jQuery mobile 在页面加载时提交表单

javascript - 使用纯 CSS 进行图像平铺