Javascript + jQuery +实现getter和setter的函数

时间:2013-02-23 01:01:47

标签: javascript jquery

我开始学习JavaScript和jQuery,并且有一个我根本不懂的小概念。它涉及功能,制定者和吸气剂。这是代码示例。

正如您所看到的,当我单击标记时,会打开一个对话框表单,我通过对话框形式获取数据,将其保存到两个对象(myHeadermyContent)中,最后用它。

  • 执行的第一个console.log(1),并打印'hi'
  • 第二个console.log(2),它会打印保存到对象myHeader中的内容。
  • 但是console.log(3),有时不会打印任何内容,或打印undefined

我对JavaScript功能有什么误解?

$(function() {

$(".myMarkup").click(function() {   
    $( "#dialog-form" ).dialog("open", function() {
        console.log(myHeader.getContent());  //(3)
    });
});


Header = function() {
    var val='hi';
    this.getContent = function() { return val; }
    this.setContent = function(x) { val = x; }
};

Content = function() {
    var val='hi';
    this.getContent = function() { return val; }
    this.setContent = function(x) { val = x; }
};

var myContent = new Content();
var myHeader = new Header();
    console.log(myHeader.getContent());  //(1)


$( "#dialog-form" ).dialog({
  autoOpen: false,
  height: 300,
  width: 350,
  modal: true,
  buttons: {
    "Modify": function() {
    a = document.getElementById('name').value.toString();
    b = document.getElementById('surname').value.toString();    
    myHeader.setContent(a);
    myContent.setContent(b);
    console.log(myHeader.getContent(a)); //(2)
    },
  }
)};

2 个答案:

答案 0 :(得分:1)

对我来说就像一个时间问题:

带上你的myHeader&来自jQuery-Ready-Callback的myContent-Declaration,或者把它放在最开始。

答案 1 :(得分:1)

问题不在于功能,设定者或吸气剂。问题在于如何使用对话API。 看起来你想在open事件上有一个回调函数,所以你可以在初始化期间添加回调。

$( "#dialog-form" ).dialog({
//your options +
open:function() {
        console.log(myHeader.getContent());  
    }

});

或稍后在调用open方法之前设置

$(".myMarkup").click(function() {   

    $( "#dialog-form" ).bind( "dialogopen", function() {
        console.log(myHeader.getContent());  //(3)
    }).dialog("open");
});

open方法不接受任何参数,因此只有参数。

我建议你在使用任何api之前查看它的api文档。 api.jqueryui.com/dialog/

我发现的其他语法错误是你没有正确关闭括号。

)};对于});

});将额外$(function() { {{1}}