Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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 获取'li'元素并将其推入对象_Javascript_Jquery_Html - Fatal编程技术网

Javascript 获取'li'元素并将其推入对象

Javascript 获取'li'元素并将其推入对象,javascript,jquery,html,Javascript,Jquery,Html,我有一个简单的问题 我有这个html和js: <ul> <li id="x">foo</li> <li id="y">bar</li> </ul> var data = { 'language': 'fa', 'phrases': {}, }; 我试试这个: data.phrases.$(this).attr('id') = $(this).html(); data.phrases[$(this).at

我有一个简单的问题

我有这个
html
js

<ul>
  <li id="x">foo</li>
  <li id="y">bar</li>
</ul>

var data = {
  'language': 'fa',
  'phrases': {},
};
我试试这个:

data.phrases.$(this).attr('id') = $(this).html();
data.phrases[$(this).attr('id')] = $(this).html();
然后尝试按此按钮:

data.phrases.push( {$(this).attr('id') : $(this).html()} );
data.phrases.extend( {$(this).attr('id') : $(this).html()} );
然后尝试扩展以下内容:

data.phrases.push( {$(this).attr('id') : $(this).html()} );
data.phrases.extend( {$(this).attr('id') : $(this).html()} );
但是不起作用

完成代码:

<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 ));
    foo 酒吧
风险值数据={ ‘语言’:‘fa’, '短语':{}, }; //我想在'data'的'phrases'中添加所有'li',以获得以下输出: //{“语言”:“fa”,“短语”:{“x”:“foo”,“y”:“bar”} $(“li”)。每个(函数(){ //data.phrases.$(this.attr('id')=$(this.html(); //push({$(this.attr('id'):$(this.html()}); //extend({$(this.attr('id'):$(this.html()}); }); $(“#result”).html(JSON.stringify(data));
请参见此处的联机代码:

您不能
。将()
推入对象。
改为使用“属性赋值”:

var数据={
‘语言’:‘fa’,
'短语':{},
};
$(“li”).text(函数(i,txt){
data.phrases[this.id]=txt;
});
$(“#result”).html(JSON.stringify(data))

    foo 酒吧

你已经很接近了!问题是JavaScript中的点运算符不能用于计算一个键然后访问它。您正在寻找[]运算符,该运算符可用于计算括号中的任何内容,然后将该值用作键。所以试试这个:

data.phrases.$(this).attr('id') = $(this).html();
data.phrases[$(this).attr('id')] = $(this).html();

您的想法是正确的,但是您没有正确地使用函数。push是一个数组方法,extend不是一个本机方法。所以我们要做的是将id设置为key,将值设置为html


试试这个=>data[“phrases”][$(this.attr('id')]=$(this.html();谢谢,
text()
html()
是个好主意,但我必须使用
each()
,因为我需要查找by
数据
属性,然后在其上使用
每个
,并使用
$(此)
元素的
数据
属性作为索引数组。。。但是使用
数据。短语[id]=val
是我的答案。@NabiK.A.Z。您不必使用。只需单击我的答案上的[Run code snippet]按钮即可看到。
.text()
.html()
都提供了一个回调,就像
一样。从我的示例中,每个()都可以清楚地看到。查看我如何使用
此.id
?有什么动静吗?你可以使用
$(this).attr(“id”)
$(this).whateverYouWant()
。你刚才说的
html()
类似于
each()
,这很清楚也很简单。但是为什么你告诉我速度和性能?!