一直搞不懂闭包问题,这次开发真的遇上了,求解决办法,要求各product分别展示出各自的属性

发布于 2022-09-05 09:29:54 字数 985 浏览 19 评论 0

$(document).ready(function() {
    function product(name, description, price) {
        this.name = name;
        this.des = description;
        this.price = price;
    }
var product1 = new product("iphone", "手机", 3200);
    var product2 = new product("huawei", "手机", 1800);
    var product3 = new product("nicai", "手机", 998);
    var product4 = new product("sansung", "手机", 3000);
    var product5 = new product("opera", "手机", 2000);
    var products = [product1, product2, product3, product4, product5];
    for(var j=0;j<products.length;j++) {
        var pname = document.getElementsByClassName("pname")[j];
        var pdes = document.getElementsByClassName("pdes")[j];
        var pprice = document.getElementsByClassName("pprice")[j];
        for(var i=0;i<products.length;i++) {
            pname.innerHTML = products[i].name;
            pdes.innerHTML = products[i].des;
            pprice.innerHTML = products[i].price;
        }
    }
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

醉态萌生 2022-09-12 09:29:54
$(document).ready(function() {
    function product(name, description, price) {
        this.name = name;
        this.des = description;
        this.price = price;
    }
    var product1 = new product("iphone", "手机", 3200);
    var product2 = new product("huawei", "手机", 1800);
    var product3 = new product("nicai", "手机", 998);
    var product4 = new product("sansung", "手机", 3000);
    var product5 = new product("opera", "手机", 2000);
    var products = [product1, product2, product3, product4, product5];


    for(var j=0;j<products.length;j++) {
        (function (product, j) {
            var pname = document.getElementsByClassName("pname")[j];
            var pdes = document.getElementsByClassName("pdes")[j];
            var pprice = document.getElementsByClassName("pprice")[j];

            pname.innerHTML = product.name;
            pdes.innerHTML = product.des;
            pprice.innerHTML = product.price;

        })(products[j], j)
    }
});

你应该是要这个效果吧

涫野音 2022-09-12 09:29:54

去掉内循环,试试直接这样。

var pname = document.getElementsByClassName("pname")[j];
var pdes = document.getElementsByClassName("pdes")[j];
var pprice = document.getElementsByClassName("pprice")[j];

pname.innerHTML = products[j].name;
pdes.innerHTML = products[j].des;
pprice.innerHTML = products[j].price;
昵称有卵用 2022-09-12 09:29:54

看你的代码,你是想要放进数组里面吧?

也可以这样,函数这样

function getProduct(product){

  var  getproduct  =  new  Object()
  getproduct.name=product.name
  getproduct.id=product.id
  ...
  return  getproduct
  console.log(getproduct)


好像这个叫做工厂函数,类似的语法吧,有点记不太清

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文