gpt4 book ai didi

javascript - 无法读取未定义的属性 'length' 很少发生

转载 作者:行者123 更新时间:2023-11-28 07:36:53 24 4
gpt4 key购买 nike

我一直在创建一个工具,需要创建一系列下拉菜单来选择一个配置文件/ View ID(来自谷歌分析),该菜单在更改前一个菜单时填充下一个菜单(为该菜单选择正确的属性)正确的帐户,然后是正确的属性的正确配置文件)。

为此,我制作了一个小型的 jquery/javascript for 循环系统,我认为它实际上相当困惑,但不确定如何改进它(虽然不是问题的一部分,但这可能是我的原因之一)遇到了问题,尽管我不确定)。

该脚本适用于我测试过的所有浏览器,包括我非常满意的移动设备。

但是,当该工具启动时,有两个人(大约一百人中)回来说配置文件/ View 尚未选择。这非常奇怪,因为我无法复制这个错误。

我曾与其中一个人联系并尝试调试(尽管通过长时间的 session 等是一个缓慢的过程),但找不到解决方案,(尽管我认为我设法隔离了问题,代码示例后会指出)。

所以我的问题是这样的。可能是什么导致了这么长的未定义错误,以及为什么只有一大群人中的 1-2 人发生这种情况(似乎在 jquery.min.js:2 中使用 jquery 版本 1.11.1?)。该错误似乎是在更改属性时发生的,这很奇怪,因为配置文件填写正确。我还询问客户端是否可以使用不同的浏览器和帐户,但同样的错误不断发生。

这是创建下拉菜单的代码:

    function fillDropdownMenus(){

var accounts = <?php echo json_encode($accountsArray); ?>;

var propertiesSelectHtml = '<div class="col-xs-12 col-md-4 properties"><select class="col-xs-12" id="properties"><option selected="selected">PROPERTY NAMES</option></select></div>';
var profilesSelectHtml = '<div class="col-xs-12 col-md-4 profiles"><select class="col-xs-12" id="profiles"><option selected="selected">VIEW NAMES</option></select></div>';

accounts.forEach(function(account){

var accountIterator = 0;
account.account['id'].forEach(function(accountId){
$('#accounts').append('<option value="'+accountId+'">'+account.account['name'][accountIterator]+'</option>');
accountIterator++;
});

});

$('.accounts').on('change','#accounts', function(event){

var currentAccount = $('#accounts').val();

$('.properties').remove();

$('.profiles').remove();

$('.accounts').after(propertiesSelectHtml);

accounts.forEach(function(account){
$.each(account.account, function(accountkey, accountvalue){
if(accountvalue == currentAccount){
var propertyIterator = 0;

account.account['property']['id'].forEach(function(propertyId){
$('#properties').append('<option value="'+propertyId+'">'+account.account['property']['name'][propertyIterator]+'</option>');
propertyIterator++;
});
}
});
});

$('.properties').on('change','#properties', function(ev){

var currentProperty = $('#properties').val();

$('.profiles').remove();

$('.properties').after(profilesSelectHtml);

accounts.forEach(function(account){
$.each(account.account['property'], function(propertykey, propertyvalues){
if($.type(propertyvalues) == 'object' || $.type(propertyvalues) == 'array'){
for(var k in propertyvalues){
var propertyvalue = propertyvalues[k];

if(propertyvalue == currentProperty){
var profileIterator = 0;

account.account['property']['profile']['id'].forEach(function(profileId){
$('#profiles').append('<option value="'+profileId+'">'+account.account['property']['profile']['name'][profileIterator]+'</option>');
profileIterator++;
});
}
}
} else {
if(propertyvalue == currentProperty){
var profileIterator = 0;
account.account['property']['profile']['id'].forEach(function(profileId){
$('#profiles').append('<option value="'+profileId+'">'+account.account['property']['profile']['name'][profileIterator]+'</option>');
profileIterator++;
});
}
}
});
});

$('#profiles').on('change', function(e){

$('#view_id').removeAttr('value');

var currentProfile = $('#profiles').val();

$('#view_id').val(currentProfile);

});

});

});

}

fillDropdownMenus();

对象结构:

Object -> account (object) -> id (array)
-> name (array)
-> property (object) -> id (array)
-> name (array)
-> profile (object) -> id (array)
-> name (array)

感谢您对我的这个问题的意见,因为这几天我一直在用头撞墙试图解决这个问题!

编辑:http://codepen.io/zephyr/pen/VYQPKQ这是正在运行的列表的代码笔。

最佳答案

这似乎是我的 JavaScript 中的一个错误,非常不一致(有这么多不同的 for 循环没有帮助)。在我将它们全部更改为正常的 .each jquery 循环后,它似乎解决了问题,并使整个菜单集工作得更好,因为也存在一些逻辑错误(我没有按属性过滤配置文件,它是仅在选择属性时显示该帐户的所有内容)。

关于javascript - 无法读取未定义的属性 'length' 很少发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28497413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com