javascript - 如何根据点击获取对应对象的值

标签 javascript jquery html

这是 JSFiddle 中的示例

<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
<div></div>

JavaScript:

function Produit(nom, prix){
    this.nom = nom;
    this.prix = prix;
};

var apple = new Produit("apple", 0.30);
var banana = new Produit("banana", 0.03);
var pear = new Produit("pear", 0.35);
var kiwi = new Produit("kiwi", 0.40);

var produit = [apple,banana,pear,kiwi];

for(var i = 0; i < produit.length; i++){
    $('a').eq(i).html(produit[i].nom + '<br/>');
};

$('a').click(function(){
    var quantity = 0;
    quantity++;
    $('div').append(produit[0].nom + ' x ' + quantity + '<br/>');
});

所以在浏览器中,我们有四种水果。我想要的是:

  1. 当我点击一个水果时,它会显示它的名称和数量,
  2. 如果我点击苹果 2 次,它会显示“apple x 2”,
  3. 然后,如果我点击 kiwi,它会在“apple x 2”下显示“kiwi x 1”
    因为我不知道该怎么做,所以在我的代码中,我只是放置了表的 0 索引,以向您展示它的样子。

我所知道的是:
- 对于 1,我需要 this替换 0produit[ ] ,但我不知道如何申请this .
- 对于 2 个,我需要一个计数器和一个 if/else ,相比之下,一旦点击一个水果,第二次点击它就会增加数量,而不是追加一个新的 <div> .
- 对于 3,它将位于 else 中与#2,当水果不匹配时,做append

最佳答案

我会通过向您的 Produit 对象添加数量并向每个链接添加 ID 来稍微简化这个问题。您可以使用 $(this).text() 访问每个链接的文本值,但 ID 会更可靠,并且可以使代码更简单。我不确定您是否关心产品在 div 列表中显示的顺序...下面的解决方案只是迭代您的产品数组并显示所有大于 0 的产品的数量。

function Produit(nom, prix, qty){
  this.nom = nom;
  this.prix = prix;
  this.qty = qty;
};

var apple = new Produit("apple", 0.30, 0);
var banana = new Produit("banana", 0.03, 0);
var pear = new Produit("pear", 0.35, 0);
var kiwi = new Produit("kiwi", 0.40, 0);

var produit = [apple,banana,pear,kiwi];

for(var i = 0; i < produit.length; i++){
  $('a').eq(i).html(produit[i].nom + '<br/>').attr("id","produit_"+i);
};

$('a').click(function(){
  var id = $(this).attr("id").replace("produit_","");
  produit[id].qty++;
  var div = '';
  for(var i = 0; i<produit.length; i++){
    if(produit[i].qty>0)
      div += produit[i].nom + ' x ' + produit[i].qty + '<br/>'
  }
  $('div').html(div);
});

如果您只想附加商品的当前数量,您可以这样做:

$('a').click(function(){
  var id = $(this).attr("id").replace("produit_","");
  produit[id].qty++;
  $('div').append(produit[id].nom + ' x ' + produit[id].qty + '<br />')
});

关于javascript - 如何根据点击获取对应对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36922344/

相关文章:

javascript - Jquery 清除文本框不起作用?

jQuery.each() 不会返回

javascript - 未捕获的 TypeError 对象没有方法 'disable'

javascript - 选择表格行时使用 TR 数据键和 TD 单元格值设置输入的 OnClick 属性

javascript - 如何突出显示单击的菜单

javascript - 我的 table 使用的是 ag-grid。我需要在表格末尾显示每列的总和

javascript - jQuery AJAX - $.each 使用正确的数据重复 html 结构?

javascript - 如何为 TypeORM 实体中的 @PrimaryGenerateColumn 设置自定义默认唯一 id 字符串?

javascript - 如何使 Material ui dropzone 区域不允许重复?

html - 防止意外选择/拖动突出显示