Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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_Jquery_Object - Fatal编程技术网

Javascript 不使用循环通过键获取对象值

Javascript 不使用循环通过键获取对象值,javascript,jquery,object,Javascript,Jquery,Object,我想将用户上传的INI文件内容传输到一个对象,并将此对象数据与现有数据进行比较。示例INI文件内容如下所示: Name: Aesthetic Author: Redon CursorCentre: 1 CursorExpand: 0 SliderBallFlip: 0 Combo1: 145,229,103 Combo2: 255,213,128 然而,当我试图获取对象本身时,它正在工作。但当我试图通过键获取值时,它不起作用。在本例中,如何通过键获取值 $(文档).on('change','

我想将用户上传的INI文件内容传输到一个对象,并将此对象数据与现有数据进行比较。示例INI文件内容如下所示:

Name: Aesthetic
Author: Redon
CursorCentre: 1
CursorExpand: 0
SliderBallFlip: 0
Combo1: 145,229,103
Combo2: 255,213,128
然而,当我试图获取对象本身时,它正在工作。但当我试图通过键获取值时,它不起作用。在本例中,如何通过键获取值

$(文档).on('change','input[name=import]',函数(e){
变量设置={};
var file=e.target.files[0];
var reader=new FileReader();
reader.onload=函数(){
var myText=reader.result;
var myText=myText.split(/\r?\n/);
$.each(myText,function(index,val){
var item=val.split(“:”);
var itemkey=item[0];
var itemval=$.trim(项目[1]);
设置[itemkey]=itemval;
});
}
reader.readAsText(文件);
console.log(设置);//有效
console.log(设置['Author']);//未定义
});

就像@connexo建议的那样:这是一个时间问题。在我稍有改动的版本中,我将两个
控制台.log
放在
读卡器内.onload
-函数中,它就工作了

$(文档).on('change','input[name=import]',函数(e){
变量设置={};
var file=e.target.files[0];
var reader=new FileReader();
reader.onload=函数(){
var myText=reader.result;
var myText=myText.split(/\r?\n/);
$.each(myText,function(index,val){
var item=val.split(“:”);
var itemkey=item[0];
var itemval=$.trim(项目[1]);
设置[itemkey]=itemval;
});
console.log(设置);//确实有效
console.log(设置['Author']);//也可以!
}
reader.readAsText(文件);
});


我认为这是一个时间问题。您在代码中的什么位置尝试控制台日志记录?在你的
阅读器.onload
函数之外,它肯定不起作用。我尝试在change函数的内部和外部都记录,但都不起作用。我还尝试在change函数中定义对象。它也不起作用。请再读一遍^^^^<代码>控制台.log(设置)
在onload功能之外工作。那么为什么
console.log(settings[key])
在同一个地方不起作用呢?@philos您在哪里向对象添加属性“Author”?@cars100m谢谢,它起作用了!但它确实让人困惑,我可以在
reader.onload
之外检索对象的全部数据,但可以通过键检索特定值。