Javascript ,您只是在阅读页面上的文字,而不是阅读数据

Javascript ,您只是在阅读页面上的文字,而不是阅读数据,javascript,jquery,html,css,Javascript,Jquery,Html,Css,您需要做的是获取单击的内容,然后使用该信息查找匹配的数据段。一旦你有了匹配的数据块,你可以用它做任何你想做的事情 这是我的演示: 第一:为每个项目添加“id”属性 第二:使用所说的“id”轻松找到该物品并获取其信息 $("#newLocation").change(function(e) { // get id of what was clicked var selected_id = e.target.value; // then use it to find right it

您需要做的是获取单击的内容,然后使用该信息查找匹配的数据段。一旦你有了匹配的数据块,你可以用它做任何你想做的事情

这是我的演示:

第一:为每个项目添加“id”属性

第二:使用所说的“id”轻松找到该物品并获取其信息

$("#newLocation").change(function(e) {
  // get id of what was clicked
  var selected_id = e.target.value; 

  // then use it to find right item`enter code here`
  var selected_item = items.find(function(item){
    return item.id === selected_id; 
  }); 

  // can now access any property
  alert(selected_item.MagicDamage); 
});

问题在于您正在分离数据和DOM,因此,当您单击某个内容并读取所单击内容的值时,您只是读取页面上的文字,而不是读取数据

您需要做的是获取单击的内容,然后使用该信息查找匹配的数据段。一旦你有了匹配的数据块,你可以用它做任何你想做的事情

这是我的演示:

第一:为每个项目添加“id”属性

第二:使用所说的“id”轻松找到该物品并获取其信息

$("#newLocation").change(function(e) {
  // get id of what was clicked
  var selected_id = e.target.value; 

  // then use it to find right item`enter code here`
  var selected_item = items.find(function(item){
    return item.id === selected_id; 
  }); 

  // can now access any property
  alert(selected_item.MagicDamage); 
});


这与vanilla javascripts
Array.find()完全相同。
lol@TJBlackman可能是。框架有自己不同的方法来执行相同的函数。这与普通javascripts
Array.find()
lol@TJBlackman可能是。框架有自己不同的方式来执行相同的功能。那么@MdHasanIbrahim怎么说呢?这似乎正适合我best@MarkDenom不,这并不不幸,因为他将整个
JSON
对象存储在
中,@MdHasanIbrahim怎么说?这似乎正适合我best@MarkDenom不,这并不不幸,因为他将整个
JSON
对象存储在
中,@MdHasanIbrahim怎么说?这似乎是最适合我的,别搞错了,我也很喜欢你的,似乎它做同样的事情,而不使用“id”属性是行业标准。你的应用程序或网站需要解析的数据更少。这是最有效的。这就是为什么杂货店的商品有ID,汽车有VIN(ID),甚至人们也有社会安全号码(ID)。这是最好的方法。获取“id”,按id查找项目。@MarkDenom这是做类似事情的正确方法。您不应该在DOM中放置太多可能导致不必要的性能问题的东西。我的回答很快就解决了你的需要和你想要的方式。但我建议你采用这种方法。对于一个小应用程序,以及出于学习目的,这两种方法都不重要。但我认为“id”方法更干净。那么@MdHasanIbrahim说了什么呢?这似乎是最适合我的,别搞错了,我也很喜欢你的,似乎它做同样的事情,而不使用“id”属性是行业标准。你的应用程序或网站需要解析的数据更少。这是最有效的。这就是为什么杂货店的商品有ID,汽车有VIN(ID),甚至人们也有社会安全号码(ID)。这是最好的方法。获取“id”,按id查找项目。@MarkDenom这是做类似事情的正确方法。您不应该在DOM中放置太多可能导致不必要的性能问题的东西。我的回答很快就解决了你的需要和你想要的方式。但我建议你采用这种方法。对于一个小应用程序,以及出于学习目的,这两种方法都不重要。但是我认为“id”方法更干净。如果
JSON
有很多属性呢?如果
JSON
正在动态变化,该怎么办。将整个对象存储在
的值中并不是理想的方式。如果
JSON
有很多属性会怎么样?如果
JSON
正在动态变化,该怎么办。将整个对象存储在
的值中不是理想的方法。
$.each(items, function (index) {
    $('#newLocation')
        .append($("<option></option>")
        .attr("value", JSON.stringify(items[index]))
        .text(items[index].Name));
});

$("#newLocation").change(function(e) {
    var select = e.target;
    alert(JSON.parse(select.value).ACrush);
});
$("#newLocation").change(function(e) {
  // get id of what was clicked
  var selected_id = e.target.value; 

  // then use it to find right item`enter code here`
  var selected_item = items.find(function(item){
    return item.id === selected_id; 
  }); 

  // can now access any property
  alert(selected_item.MagicDamage); 
});