javascript - 如何在 javascript 中创建具有可点击 id 的列表

标签 javascript html

我正在尝试从 json 文件实现数组项列表,更多列出您在 google plus 上找到的列表,但我是编程新手,不知道如何使用 javascript 来实现。请帮忙。我尝试了正在关注,但我收到一个空白页;

var records = {
            "states": [
                {
                    "name": "johor",
                    "command": "view_johor"
                },

                {
                    "name": "selangor",
                    "command": "view_selangor"
                },

                {
                    "name": "melaka",
                    "command": "view_melaka"
                },

                {
                    "name": "kuala lumpur",
                    "command": "view_kl"
                },

                {
                    "name": "penang",
                    "command": "view_penang"
                }
            ]
        };

        $.each(records.states, function (key, val) {
            $('#ul').append($('<li>').text('name: ' + val.name + ', command: ' + val.command));
        });

和 html:

 <ul id="ul"></ul>

我不明白 list.js 和 data.js 如何作为列表插件工作。我设法使用 Handlebars 显示 json 文件中的列表,但由于无法弄清楚所选项目的 onclick 项目显示内容而放弃了在 Handlebars 中。现在我正在尝试使用 javascript 以老式方式进行操作。

最佳答案

您在示例中使用了 each() 函数,但没有标记 jQuery。这是一个非常简单的情况,我建议您使用纯 JavaScript。

var records = {states:[{name:"johor",command:"view_johor"},{name:"selangor",command:"view_selangor"},{name:"melaka",command:"view_melaka"},{name:"kuala lumpur",command:"view_kl"},{name:"penang",command:"view_penang"}]},

    elem = document.getElementById('ul');  //get 'ul' element from the DOM
      records.states.forEach(function(v) { //iterate over array in JSON
        var li = document.createElement('li'); //create 'li' element
        li.innerHTML = 'name: ' + v.name; //assign your data to each 'li'
        elem.appendChild(li); //append 'li' to the 'ul' element
    });
    
var elems = document.getElementsByTagName('li');
Array.from(elems).forEach((v,i) => v.addEventListener('click', function(){
  Array.from(elems).forEach((c,k) => {c.style.background = 'transparent'; c.innerHTML = 'name: ' + records.states[k].name;});
  this.innerHTML = 'name: ' + records.states[i].name + ', command: ' + records.states[i].command; 
  this.style.background = '#E3F6CE';
}));
<ul id="ul"></ul>

关于javascript - 如何在 javascript 中创建具有可点击 id 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42864585/

相关文章:

javascript - 我如何在 Next.js 中删除 ID 为 ="__next"的 div

javascript - 为什么不在 javascript 中获取 xml nodeValue?

javascript - 奇怪的 XPath 行为

javascript - 在输入文本框中输入字符后移动到新页面

javascript - 如何检测 div 的内容何时被卸载?

asp.net - 我必须使用 JavaScript 吗?

javascript - TS7053 : Element implicitly has an 'any' type

html - 你如何在 Go 中转义原始 HTML?

html - LessCss - 创建主题(又名使用不同变量的 css 文件)

jquery - 在文本中查找链接并使用 jquery 将其包装在标签中