使用getjson方法动态地从json中获取数据并循环这些值
Fetch data dynamically from json with get json method and loop the values
我有一个JSON文件,我想用JSON值创建一个动态html元素。下面是JSON文件:
{
"india": [
{
"position": "left",
"imgurl":"3.jpg"
},
{
"position": "right",
"imgurl":"2.jpg"
},
{
"position": "left",
"imgurl":"3.jpg"
},
{
"position": "right",
"imgurl":"2.jpg"
}
],
"aus": [
{
"position": "left",
"imgurl":"4.jpg"
},
{
"position": "right",
"imgurl":"2.jpg"
},
{
"position": "left",
"imgurl":"3.jpg"
},
{
"position": "right",
"imgurl":"2.jpg"
}
]
}
下面是HTML文件和Javascript代码:
<html>
<head>
<title>The jQuery Example</title>
<script type = "text/javascript"
src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type = "text/javascript" language = "javascript">
$(document).ready(function() {
$("#driver").click(function(event) {
$.getJSON('list1.json', function(data) {
$.each(data.india, function (key, val) {
$('.ms-left').append('<div class="ms-section '+val.position+'" id="left3"><img src="'+val.imgurl+'"></div>');
});
});
});
});
</script>
</head>
<body>
<p>Click on the button to load result.html file:</p>
<div id = "stage" style = "background-color:#cc0;">
STAGE</div>
<ul id="ul"></ul>
<div class="ms-left"></div>
<input type = "button" id = "driver" value = "india" />
<ul id="menu" class="">
<li><a href="" data-value="india">India</a></li>
<li><a href="" data-value="aus">Australia</a></li>
<li><a href="" data-value="usa">USA</a></li>
</ul>
</body>
</html>
我想为每个函数提供动态变量,即$.each(data.india)
..我想把印度改成AUS,美国动态意味着数据。印度,数据。这样.each
将根据参数从JSON中创建和获取值。请帮助。
我如何将一个动态参数传递给.each
循环,这将帮助我根据JSON中定义的国家获取数据?目前,我可以静态地更改数据。印度,数据。
@makemelive几个建议:
- 把JS代码放在
<body>
标签的末尾,而不是在<head>
里面。 - 使用一致的缩进,无论是制表符还是空格,首选空格,因为它们是通用的。
这是你的问题的解决方案:
<html>
<head>
<title>The jQuery Example</title>
</head>
<body>
<div id="stage" style="background-color:#cc0;">STAGE</div>
<div class="ms-left"></div>
<ul id="menu" class="countries">
<li><a href="#" data-value="india">India</a></li>
<li><a href="#" data-value="aus">Australia</a></li>
<li><a href="#" data-value="usa">USA</a></li>
</ul>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
var json = {
"india": [
{
"position": "left",
"imgurl": "3.jpg"
},
{
"position": "right",
"imgurl": "2.jpg"
},
{
"position": "left",
"imgurl": "3.jpg"
},
{
"position": "right",
"imgurl": "2.jpg"
}
],
"aus": [
{
"position": "left",
"imgurl": "4.jpg"
},
{
"position": "right",
"imgurl": "2.jpg"
},
{
"position": "left",
"imgurl": "3.jpg"
},
{
"position": "right",
"imgurl": "2.jpg"
}
]
};
</script>
<script>
var populate = function (country) {
$('.ms-left').empty();
$.each(json[country], function (key, value) {
var _div = $('<div>')
.addClass('ms-section')
.addClass(value.position)
.append($('<img>').attr('src', value.imgurl));
$('.ms-left').append(_div);
});
};
$(document).ready(function() {
/**
* Get your JSON here and store it in a local variable,
* loading the file for each case is not a good practice
* if the file is always the same.
*/
$('.countries a').each(function() {
$(this).on('click', populate.bind(this, $(this).data('value')));
});
});
</script>
</body>
</html>
相关文章:
- 如何在Angular.js中循环动态添加Fields并获取数据并将其发送到服务器
- 如何使用React JS中的循环,根据条件渲染或不渲染表数据
- 在Jade中循环并显示来自Mongodb的数据
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 使用来自不同循环Javascript的数据创建数组
- Json在js中对数据循环进行编码
- Emberjs#每个循环不处理数组数据
- $.每个jquery循环打印一个“;未定义的“;对于getJSON请求后的每个元素,网格数据都会完美地打印出来
- 当JSON数据=变量时,需要执行循环
- 如何在php循环中显示隐藏的数据类型
- 我的复选框没有't使用的循环来显示数据
- 按数据属性循环元素并替换值
- AngularJS和Javascript大数据循环性能
- 返回离子项的 ajax 数据循环
- Codeigniter Jquery Ajax:如何将返回的数据循环为 html
- 通过Three.js中的getImageData像素颜色数据循环生成多个立方体
- 没有小数的数据循环的Javascript计算
- 通过json数据循环创建下拉列表
- 获取json数据循环
- 优化数据循环