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

Javascript 试图通过模块模式在DOM元素上实现change()事件,javascript,jquery,oop,events,Javascript,Jquery,Oop,Events,我有一个复选框,当用户单击它时,我希望它更改私有变量输出。然后我想将对象的属性更新到输出。在下面的代码中,我无法使更改事件正常工作,我相信这是因为我不知道如何通过模块模式与DOM元素交互。如果你能帮上忙,那就太好了 另一个让我担心的是,我希望在用户单击时更新apple对象中的价格变量。每次用户单击复选框时,价格将更改为随机数。我总是在更新变更事件之外的对象时遇到问题,就像您在我的代码中看到的那样苹果。价格在变更事件之外。如果你能告诉我,我也将不胜感激 var CreatItems = funct

我有一个复选框,当用户单击它时,我希望它更改私有变量
输出
。然后我想将对象的属性更新到输出。在下面的代码中,我无法使更改事件正常工作,我相信这是因为我不知道如何通过模块模式与DOM元素交互。如果你能帮上忙,那就太好了

另一个让我担心的是,我希望在用户单击时更新
apple
对象中的价格变量。每次用户单击复选框时,价格将更改为随机数。我总是在更新变更事件之外的对象时遇到问题,就像您在我的代码中看到的那样<代码>苹果。价格在变更事件之外。如果你能告诉我,我也将不胜感激

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)

我得到安慰“未定义”

您好,我为您创建了列表,请查看:


您还有一个问题,您的工作几乎很好,您只有一个问题:当您返回
输出值时,它会像返回值一样返回它,但是如果您想在
输出
和新的
苹果
变量之间保持连接,您应该像对象一样返回它。在这种情况下,它将不会像值一样返回,而是像指向对象的链接一样返回。

您是否曾看到控制台上的“已检查”或“未检查”消息?price总是
未定义的
,这并不奇怪——它来自
testMethod
,它返回
输出
,从未用任何东西初始化。我在控制台中得到“未定义”。它甚至没有输出字符串。我找到了第一部分的答案。它不在文档中。ready()执行
output.a=“checked”如果我注释掉console.log(“Checked”)
什么都不会被打印出来,那就做任何事情。所以我看不到价格变量在变更事件之外是如何变化的。感谢您迄今为止的帮助,我看到您使一处房产成为“a”。为什么要将警报设置为setInterval。我需要一个复选框中的某些内容。我更改了一个链接,现在查看它,现在将“我的价格”改为“我的价格”,选中复选框,您将看到更新的警报为什么使用setInterval?如果
apple.price.myPrice
在setInterval中工作,那么在我实例化苹果之后,它为什么不能在代码中工作呢?这才是我真正想要的。而且设定的时间间隔非常分散注意力。它会用警报锁定页面。非常感谢你的帮助。我会看看这个好的,你可以删除设置间隔。。。在它工作的代码中,在setInterval中放入而不是“alert”“console.log”,您将看到它也工作。您看不到必要的结果,因为当您编写“console.log(apple.price.myPrice)”变量时,仍然没有更新并通过“10”(在我的代码中)或类似“undefined”(在您的代码中)初始化,您可以添加一个“按钮”,例如,代替setInterval并调用“apple.price.myPrice”-你会看到它仍然有效:)我不明白为什么它对我正在处理的复选框不起作用,为什么我需要一个设置的间隔或其他元素,如按钮。该值应仅取决于复选框。