Javascript 循环创建对象
Javascript loop create Object
我想创建一个对象,但目前还没有成功。
var optionz = [];
$('ul > li > a').each(function( index ) {
optionz [ $(this).attr('href') ] = $(this).children('img').attr('src');
// alert($(this).attr('href')+ " " +$(this).children('img').attr('src'));
});
$.each(optionz, function (index, value) {
alert( index + ' : ' + value );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul id="ul">
<li><a href="gaga1.com"><img src="1.png"/></a></li>
<li><a href="gaga2.com"><img src="1.png"/></a></li>
<li><a href="gaga3.com"><img src="1.png"/></a></li>
<li><a href="gaga4.com"><img src="1.png"/></a></li>
</ul>
我错过了什么?
您正在创建一个数组,但您没有将项目放入数组中。相反,您将属性添加到数组对象。当您遍历数组中的项目时,您将找不到任何项目,因为有 none.
改为创建一个对象,当您遍历对象属性时,您会找到放入其中的属性:
var optionz = {};
演示:
var optionz = {};
$('ul > li > a').each(function( index ) {
optionz [ $(this).attr('href') ] = $(this).children('img').attr('src');
// alert($(this).attr('href')+ " " +$(this).children('img').attr('src'));
});
$.each(optionz, function (index, value) {
alert( index + ' : ' + value );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul id="ul">
<li><a href="gaga1.com"><img src="1.png"/></a></li>
<li><a href="gaga2.com"><img src="1.png"/></a></li>
<li><a href="gaga3.com"><img src="1.png"/></a></li>
<li><a href="gaga4.com"><img src="1.png"/></a></li>
</ul>
因为你在数组中创建的键和值不是真正的对象,你应该这样创建:
var optionz = [];
$('ul > li > a').each(function (index) {
var obj = {};
obj[$(this).attr('href')] = $(this).children('img').attr('src');
optionz.push(obj);
});
$.each(optionz, function (index, value) {
console.log( index + ' : ' + value );
});
或者您只能更改此:
var optionz = {};
我想创建一个对象,但目前还没有成功。
var optionz = [];
$('ul > li > a').each(function( index ) {
optionz [ $(this).attr('href') ] = $(this).children('img').attr('src');
// alert($(this).attr('href')+ " " +$(this).children('img').attr('src'));
});
$.each(optionz, function (index, value) {
alert( index + ' : ' + value );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul id="ul">
<li><a href="gaga1.com"><img src="1.png"/></a></li>
<li><a href="gaga2.com"><img src="1.png"/></a></li>
<li><a href="gaga3.com"><img src="1.png"/></a></li>
<li><a href="gaga4.com"><img src="1.png"/></a></li>
</ul>
我错过了什么?
您正在创建一个数组,但您没有将项目放入数组中。相反,您将属性添加到数组对象。当您遍历数组中的项目时,您将找不到任何项目,因为有 none.
改为创建一个对象,当您遍历对象属性时,您会找到放入其中的属性:
var optionz = {};
演示:
var optionz = {};
$('ul > li > a').each(function( index ) {
optionz [ $(this).attr('href') ] = $(this).children('img').attr('src');
// alert($(this).attr('href')+ " " +$(this).children('img').attr('src'));
});
$.each(optionz, function (index, value) {
alert( index + ' : ' + value );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul id="ul">
<li><a href="gaga1.com"><img src="1.png"/></a></li>
<li><a href="gaga2.com"><img src="1.png"/></a></li>
<li><a href="gaga3.com"><img src="1.png"/></a></li>
<li><a href="gaga4.com"><img src="1.png"/></a></li>
</ul>
因为你在数组中创建的键和值不是真正的对象,你应该这样创建:
var optionz = [];
$('ul > li > a').each(function (index) {
var obj = {};
obj[$(this).attr('href')] = $(this).children('img').attr('src');
optionz.push(obj);
});
$.each(optionz, function (index, value) {
console.log( index + ' : ' + value );
});
或者您只能更改此:
var optionz = {};