尝试通过模块模式在DOM元素上实现change()事件

时间:2015-03-01 08:18:35

标签: javascript jquery oop events

我有一个复选框,当用户点击它时,我希望它更改私有变量output。然后我想将对象的属性更新为输出。在下面的代码中,我无法让更改事件发挥作用我相信它是因为我不知道如何通过Module模式与DOM元素进行交互。所以,如果你可以帮忙,那就太好了。

我担心的其他问题是,我希望在用户点击时更新apple对象中的价格变量。每次用户点击复选框时,价格都会将值更改为随机数。我总是在更新事件之外更新问题,就像在我的代码中看到的那样。 apple.price是外部变更事件。如果你能帮助我,我也将非常感激。

var CreatItems = function(name, price, pic){
    this.name = name;
    this.price = price;
    this.pic = pic;
}
CreatItems.prototype.listOut = function(){
    console.log(this.name + this.price + this.pic)
}

var changingPrice = (function(){
    // testMethod : function(){
    //  return 1.77
    // }
    var output;
    var testMethod = function(){
        return output
    }
    var clickedWithOnes = function(){
        $("#withones").change(function(){
            if(this.checked){
                // output = "checked";
                console.log("Checked")
            }else{
                // output = "unchecked";
                console.log("unchecked")
            }
        })
    }
    return{
        testMethod : testMethod,
        clickedWithOnes : clickedWithOnes
    }
})()
changingPrice.clickedWithOnes()
var price = changingPrice.testMethod()
// console.log(price)
var apple = new CreatItems("apple", price, "will be red div")
console.log(apple.price)

我得到安慰"未定义"

1 个答案:

答案 0 :(得分:0)

您好我为您创建了商品详情:link here new

你有下一个问题,你工作得很好,你只有一个问题:当你返回output值时,它会返回一个值,但如果你想保持output之间的联系和新的apple变量一样,你应该像对象一样返回它,在这种情况下,它不会像值那样返回,而是像对象链接那样返回。