简体   繁体   English

如何将事件添加到每个动态生成的元素中,以及如何仅从JAVASCRIPT中的json访问数据

[英]How to add an event to each of the dynamically generated element and access data from json in JAVASCRIPT only

This is my code in which I want to call clicksubmenu function onclick on each li element and each onclick I have to access different data from json. 这是我的代码,我想在每个li元素上调用clicksubmenu函数onclick ,并且每个onclick我都必须从json访问不同的数据。

Each li element is not calling the function and showing unexpected result : 每个li元素都没有调用该函数并显示出意外结果:

Code: 码:

var submenu1 = '{ "list" : [' + '{ "name":"Wish your friend on his 
timeline "  , "occasion": "Birthday!!", "status": "Viewed", "url": "www.notification1.com"
}, ' + ' {
  "name": "Wish your friend on his timeline",
  "occasion": "Birthday!!",
  "status": "Viewed",
  "url": "www.notification1.com"
}, ' + ' {
  "name": "Wish your friend on his timeline",
  "occasion": "Birthday!!",
  "status": "Viewed",
  "url": "www.notification1.com"
}, ' + ' {
  "name": "Wish your friend on his timeline",
  "occasion": "Anniversary!!",
  "status": "Viewed",
  "url": "www.notification2.com"
}, ' + ' {
  "name": "Wish your friend on his 
  timeline " , "
  occasion ":"
  Anniversary!!","
  status ":"
  Viewed ", 
  "url": "www.notification2.com"
}, ' + ' {
  "name": "Wish your friend on his  
  timeline " , "
  occasion ":"
  Anniversary!!","
  status ":"
  Viewed ", 
  "url": "www.notification2.com"
}, ' + ' {
  "name": "Wish your friend on his 
  timeline " , "
  occasion ":"
  Birthday!!","
  status ":"
  Viewed ", 
  "url": "www.notification3.com"
}, ' + ' {
  "name": "Wish your friend on his 
  timeline " , 
  "occasion": "Anniversary!!",
  "status": "Viewed",
  "url": "www.notification4.com"
}, ' + ' {
  "name": "Wish your friend on his timeline",
  "occasion": "Birthday!!",
  "status": "Viewed",
  "url": "www.notification5.com"
}
]
}
';
var obj = JSON.parse(submenu1);
var count = obj.list.length;

var li = new Array(10);
var liid = ['l1', 'l2', 'l3', 'l4', 'l5', 'l6', 'l7', 'l8', 'l9'];

function f() {


  var i = 0;
  document.getElementById('count').innerHTML = count;
  for (i = 0; i < count; i++) {
    li[i] = document.createElement("li");
    li[i].setAttribute('id', liid[i])
    li[i].className = "liclass";
    var t = document.createTextNode(obj.list[i].occasion +
      obj.list[i].name);
    li[i].appendChild(t);
    document.getElementById('ul').appendChild(li[i]);
    li[i].addEventListener('click', clicksubmenu(i));
  }

}

function visible(submenu) {
  if (document.getElementById(submenu).className == "divVisible") {
    document.getElementById(submenu).className = 'divHidden';
  } else {
    document.getElementById(submenu).className = 'divVisible';

  }
}

function clicksubmenu(a) {

  if (document.getElementById(liid[a]).style.backgroundColor == "lightblue") {
    alert(obj.list[a].url);
  } else {
    document.getElementById(liid[a]).style.backgroundColor = "lightblue";

    alert(obj.list[a].url);
    count--;
    document.getElementById('count').innerHTML = count;
    document.getElementById(liid[a]).innerHTML = obj.list[a].occasion + "    < br > " + obj.list[a].name + " < br > " + "
    Status: " + obj.list[a].status;
  }

  if (count == 0) {
    document.getElementById('count').style.visibility = "hidden";
  }
}

Neel, may be you have json structure issue. Neel,可能是您有json结构问题。 your json opbject structure should be like this: can you please change and check the code. 您的json opbject结构应如下所示:您能否更改并检查代码。

var submenu1 = { "list" : 
[{ "name":"Wish your friend on his timeline", "occasion":"Birthday!!", "status":"Viewed","url":"www.notification1.com"},
{ "name":"Wish your friend on his timeline" , "occasion":"Birthday!!", "status":"Viewed","url":"www.notification1.com"},
{ "name":"Wish your friend on his timeline" , "occasion":"Birthday!!", "status":"Viewed","url":"www.notification1.com"},
{ "name":"Wish your friend on his timeline" , "occasion":"Anniversary!!", "status":"Viewed", "url":"www.notification2.com" },
{ "name":"Wish your friend on his timeline" , "occasion":"Anniversary!!", "status": "Viewed", "url":"www.notification2.com" },
{ "name":"Wish your friend on his timeline" , "occasion":"Anniversary!!", "status":"Viewed", "url":"www.notification2.com" },
{ "name":"Wish your friend on his timeline" , "occasion":"Anniversary!!", "status": "Viewed", "url":"www.notification2.com" }
]};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何将事件添加到仅在javascript中动态生成的每个元素 - How to add event to each element generated dynamically in javascript only 向动态生成的元素添加事件 - Add event to dynamically generated element 如何在动态创建的元素中添加Javascript事件? - How to add Javascript event in dynamically created element? 从javascript访问数据集中的每个元素 - access each element in a data set from javascript 如何访问以下JSON数据中的每个元素? - How to access each element in the following JSON data? 向循环内动态生成的 DIV 添加点击事件,显示弹出 window 并在 Javascript 中为每个 DIV 提供不同的文本 - Add a click event to dynamically generated DIVs inside a loop that show a popup window with different text for each of them in Javascript 从JavaScript动态添加tr元素的onclick事件 - Add onclick event for tr element dynamically from JavaScript Javascript; 从对象数组动态生成的表:如何将键添加为数据单元的类 - Javascript ; dynamically generated table from array of objects : how to add keys as classes for the data cells 在 Javascript 中动态创建的元素上添加点击事件 - Add click event on a dynamically created element in Javascript JavaScript onclick 事件从动态生成的 html 元素中获取错误的 id - JavaScript onclick event gets the wrong id from dynamically generated html element
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM