我试图从HTML元素中获取类名,并将其添加到现有的对象中。令人恼火的是,我可以让它工作,但是我把它放入的每个语法错误检查器都说代码是错误的。我已经搜索了相当彻底,但我甚至不知道如何表达这个问题,真的。下面是不抛出错误的代码:
$.each( $(objDiv).children('div'), function(){
var field = $(this).attr('class');
var value = $(this).text();
var add = { field : value };
$.extend(obj, add);
});但问题是,它将" field“作为字段的文字字符串放入。
对象{label:"level3a",field__:“权威地增强可持续专业知识之后以客户为中心的可交付产品”}
对象{label:"level3a",字段:“完全包含没有无处不在的元服务的点击和实际数据”}
而不是类名值。为了避免这种情况,我在“field”旁边加上了括号:
$.each( $(objDiv).children('div'), function(){
var field = $(this).attr('class');
var value = $(this).text();
var add = { [field] : value };
$.extend(obj, add);
}给了我我想要的结果,
对象{label:"level3a",ClassA__:“权威地增强可持续专业知识之后以客户为中心的可交付产品”}
对象{label:"level3a",ClassB:“完全包含没有无处不在的元服务的点击和实际数据”}
但不知怎么的,这是不正确的。对我在这里做错了什么有什么想法,或者有什么更好的方法来完成这件事?
发布于 2016-03-28 22:33:39
虽然我不能告诉你为什么这是错误的(或为什么它的工作,就这件事),我可以告诉你一个更“适当”的方式来做它。
您将声明add为空对象,如下所示:add = {};
然后可以将字段作为属性添加到其中,如下所示:add[field] = value;
这将为您提供一个带有模型的对象add:{ ClassA: "Your text here" }
请参考属性访问器的类型,以获得更多信息:Accessors。上述方法使用“括号表示法”。
编辑:显然,在ECMA6中,您编写的是有效的javascript,使用的是所谓的ComputedPropertyName。然而,它还不是所有浏览器都支持的,所以在浏览器对ECMA6的支持变得更好之前,最好使用括号-符号属性名称方法。有关更多信息,请参见以下答案:https://stackoverflow.com/a/2274327/2748503
https://stackoverflow.com/questions/36272264
复制相似问题