我开始学习JavaScript和jQuery,并且有一个我根本不懂的小概念。它涉及功能,制定者和吸气剂。这是代码示例。
正如您所看到的,当我单击标记时,会打开一个对话框表单,我通过对话框形式获取数据,将其保存到两个对象(myHeader
和myContent
)中,最后用它。
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)
},
}
)};
答案 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}}