【发布时间】:2020-12-08 23:37:35
【问题描述】:
我有一个列表,它实际上是从 JSON 派生的国旗、国家名称和国家代码
我已经编写了 for 循环来呈现这样的 html 元素
data =
[
{
"name": "INDIA ",
"code": "93",
"url": 'https://www.countryflags.io/in/flat/64.png'
}, {
"name": "JAPAN ",
"code": "355",
"url": 'https://www.countryflags.io/jp/flat/64.png'
}]
for (var i = 0; i < data.length; i++) {
var countryName = data[i].name;
var countrtDialCode = data[i].code;
var countryUrl = data[i].url;
var badge = document.createElement('div');
badge.className = 'badge';
badge.innerHTML =
'<div id="listSection">'+
'<div style="display:flex">'+
'<div id="flagSection">'+'<img style="height:10px;width:20px;margin-top:4px;" src='+countryUrl+'>'+'</div>'+' '+
'<div id="nameSection">' + countryName + '</div>' +' '+
'<div id="codeSection">' + countrtDialCode + '</div>'
+'</div>'+
'</div>'
document.getElementById('countries-list').appendChild(badge);
}
我也有一个 div 部分
<div id="inputSection"> </div>
<div id="countries-list">
</div>
我已经这样做了,当您单击输入部分时,列表将会出现,我可以从列表中进行选择,并且我需要 仅应该显示标志
<script type="text/javascript">
$(document).ready(function(){
$('#countries-list').addClass('hideSection').removeClass('showSection')
});
$('#inputSection').click(function(){
$('#countries-list').addClass('showSection').removeClass('hideSection')
})
</script>
所以当我从列表中单击印度 JSON 时,如果我单击输入部分列表,我应该再次在 inputSection 中显示印度标志,如果我选择 NEPAL,印度标志应该替换为 NEPAL 标志。
有 2 个问题。第一个我无法在 INNERHTML 中编写点击函数来识别点击了哪个国家,第二个是如何检索标志部分并将其显示在 inputSection 中。
任何小提琴都会非常有帮助和感激
【问题讨论】:
-
您在元素上重复 ID。从网络标准的角度来看,这是无效的 html。如果你想要一个重复的标识符,你应该使用类来代替
-
请提供一些示例数据,以便更容易测试行为。
-
与问题无关:您应该有一个
showSection(或hideSection),另一个(隐藏/显示)是默认值 - 然后您只需要切换一个类 -
@hev1 添加了 json 虚拟数据
-
主要是2个问题-如何将onclick写入innerHTML?因为我需要知道单击了哪个标志 - 然后用标志替换 inputSection 并循环重复[再次如果用户单击另一个标志,应该删除已经选择的标志并且应该看到新标志]。我重复一遍,只有标志应该是可见的
标签: javascript html jquery user-interface