首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取‘it’元素并将其推入对象

获取‘it’元素并将其推入对象
EN

Stack Overflow用户
提问于 2016-05-23 22:47:05
回答 3查看 269关注 0票数 3

我有个简单的问题!

我有这个htmljs

代码语言:javascript
复制
<ul>
  <li id="x">foo</li>
  <li id="y">bar</li>
</ul>

var data = {
  'language': 'fa',
  'phrases': {},
};

我希望将所有li添加到phrases of data中,以获得以下输出:

代码语言:javascript
复制
{"language":"fa","phrases":{"x":"foo","y":"bar"}}

我试试看:

代码语言:javascript
复制
data.phrases.$(this).attr('id') = $(this).html();

并尝试push如下:

代码语言:javascript
复制
data.phrases.push( {$(this).attr('id') : $(this).html()} );

并尝试extend如下:

代码语言:javascript
复制
data.phrases.extend( {$(this).attr('id') : $(this).html()} );

但不管用!

已完成的代码:

代码语言:javascript
复制
<ul>
  <li id="x">foo</li>
  <li id="y">bar</li>
</ul>

<div id="result"></div>

var data = {
  'language': 'fa',
  'phrases': {},
};

//I want to append all `li` in the `phrases` of `data` for have this output:
//{"language":"fa","phrases":{"x":"foo","y":"bar"}}
$("li").each(function() {
  //data.phrases.$(this).attr('id') = $(this).html();
  //data.phrases.push( {$(this).attr('id') : $(this).html()} );
  //data.phrases.extend( {$(this).attr('id') : $(this).html()} );
});

$("#result").html(JSON.stringify( data ));

参见这里的在线代码:https://jsfiddle.net/NabiKAZ/fw63jd5k/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-23 22:51:03

你离我很近!问题是JavaScript中的点运算符不能用于计算键然后访问它。您正在寻找运算符,它可以用于计算括号中的任何内容,然后使用该值作为键。所以试试这个:

代码语言:javascript
复制
data.phrases[$(this).attr('id')] = $(this).html();
票数 1
EN

Stack Overflow用户

发布于 2016-05-23 22:49:42

不能将.push()转换为对象。

使用属性赋值代替:

代码语言:javascript
复制
var data = {
  'language': 'fa',
  'phrases': {},
};

$("li").text(function(i, txt) {
  data.phrases[this.id] = txt;
});

$("#result").html(JSON.stringify( data ));
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li id="x">foo</li>
  <li id="y">bar</li>
</ul>

<div id="result"></div>

data.phrases是您的对象文本 [this.id]是您的新对象属性,其中this.id是当前li的ID。 = txt;是将当前li文本的值分配给该属性的地方。

从上面可以看出,如果需要整个HTML,请使用.html(),如下所示:

代码语言:javascript
复制
$("li").html(function(i, html) {
  data.phrases[this.id] = html;
});
票数 4
EN

Stack Overflow用户

发布于 2016-05-23 22:51:19

您有正确的想法,但您并没有完全正确地使用您的函数。push是一种数组方法,而extend只是一个本机方法。因此,我们要做的是将id设置为键,将值设置为html。

https://jsfiddle.net/fw63jd5k/2/

代码语言:javascript
复制
$("li").each(function(i, el) {
  data.phrases[el.id] = $(el).html()
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37401744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档