跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • js折腾头要炸了
未分類
9 4 月 2020

js折腾头要炸了

新网络 大佬有话说 : 2020-3-24 17:29:06

js折腾头要炸了

本帖最后由 新网络 于 2020-3-24 17:38 编辑

for (i = 0; i < $(".newBarcode").length; i++) {
    var bc = $(".newBarcode").value;
        var ii = $("input.newBarcode").id.replace(/[^0-9]/ig,"");
        var regString = /+/;
        if (!regString.test(bc)) {
                $.getJSON("http://192.168.0.240/location.php?barcode=" + bc,function(data){
                        if (!data.location) {
                                console.log(ii);
                                if ($("#prodInfoName" + ii).style.length < 2) {
                                        $("#prodInfoName" + ii).css(‘color’,’red’).css(‘font-weight’,’bold’);
                                }
                        }
                });
        }
}

如果去掉for命令 是没问题 可以执行

但是加入for命令console.log(ii); 输出都为$(".newBarcode").length -1 的值

到底哪里问题

如果是console.log(ii) 放到getJSON之前是可以输出每个 ii 值说来 这个又是没问题到底是哪里出问了

x1184 大佬有话说 : 2020-3-24 17:31:17

作用域问题吧 试下for (let i = 0; i < $(".newBarcode").length; i++)

u2u 大佬有话说 : 2020-3-24 17:38:26

本帖最后由 u2u 于 2020-3-24 17:39 编辑

因为getJSON是异步的,换句话说,就是他有可能会在你整个for执行完毕后再慢悠悠的进行网络连接,执行里面的内容。所有你需要改成同步执行,把你的代码放到下面这两行之间就行。

$.ajaxSettings.async = false;
……..
$.ajaxSettings.async = true;

逸笙 大佬有话说 : 2020-3-24 17:40:39

异步问题
for 它不等你 get 某个url的,它自己for 完了,值已经是lenth-1了,
然后你第一个barcode才收到了,于是console.log出来的,就是lenth-1。

x1184 大佬有话说 : 2020-3-24 17:42:31

u2u 大佬有话说 : 2020-3-24 17:38
因为getJSON是异步的,换句话说,就是他有可能会在你整个for执行完毕后再慢悠悠的进行网络连接,执行里面的 …

看了下确实异步问题 但强制改同步感觉对性能很影响yc003t

ghs9262 大佬有话说 : 2020-3-24 17:45:08

。。$.getJSON 是异步ajax   你可以把ii作为参数放进ajax函数 然后用回调的时候用 this.参数名 取出来

新网络 大佬有话说 : 2020-3-24 17:45:38

u2u 大佬有话说 : 2020-3-24 17:38
因为getJSON是异步的,换句话说,就是他有可能会在你整个for执行完毕后再慢悠悠的进行网络连接,执行里面的 …

原来是这样,谢谢大佬

逸笙 大佬有话说 : 2020-3-24 17:45:57

那我来说个菜鸟的解决方案:
for (i) {
    bc=xxxxx;
    ii=xxxxx;
    if (xxxx) barcode(bc, ii);
}

function barcode(a, b)
{
getJSON(xxxxxxx);
xxxxxxxxxxxx
}

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具