我需要一些帮助,我正在尝试用javascript生成一些html,但总是得到相同的,这是我的javascript代码
var datePickerHTML = function(id){
var html = "<div id='"+id+"' class='ui-datepicker'>";
html += "Hello World, my ID is "+id;
html += "</div>";
return html;
}
var UhmaCalendar = function(config){
var dpID = 'dp'+config.inputField;
this.dpID = dpID;
jQuery('#'+config.inputField).after(function(){
return datePickerHTML(dpID);
});
jQuery('#'+config.btn).click(function(){
jQuery('#'+dpID).toggle('slow');
}
}
现在,在我的html中我写了
UhmaCalendar({
btn : 'countday_pick',
inputField : 'countday'
});
UhmaCalendar({
btn : 'sartday_pick',
inputField : 'startday'
});
这是2个不同的输入和按钮,但它们总是显示相同的文本相同的div,并且id我用firebug检查html,只创建了一个div,ad我想要2个div与不同的id 我也尝试用
new UhmaCalendar({
btn : 'sartday_pick',
inputField : 'startday'
});
但是一样,我在这里做错了什么 感谢
答案 0 :(得分:4)
您忘记了 return html;
函数中的datePickerHTML
。
使用最新的编辑,我无法重现错误。有关正常运行的演示,请参阅http://jsbin.com/ucage4。
答案 1 :(得分:1)
很难说出错了,引用的代码是不可解析的。一些可能有用的注释:
var datePickerHTML = function(id){
var html = "<div id='"+id+"' class='ui-datepicker'>";
html += "Hello World, my ID is "+id;
html += "</div>";
// Should probably have `return html;` here
}
var UhmaCalendar = function(config){
this.dpID = 'dp'+config.inputField;
jQuery('#'+config.inputField).after(function(){
return datePickerHTML(dpID);
// ^-- This symbol is undefined, and != `this.dbID`
});
jQuery('#'+config.btn).click(function(){
jQuery('#'dpID).toggle('slow');
// ^-- syntax error (and `dbID` is undefined here too)
} // <-- Missing `);` here
}
如果我不得不猜测意图:
var datePickerHTML = function(id){
var html = "<div id='"+id+"' class='ui-datepicker'>";
html += "Hello World, my ID is "+id;
html += "</div>";
return html; // tjc
}
var UhmaCalendar = function(config){
var dpID = 'dp'+config.inputField; // tjc
this.dpID = dpID; // tjc
jQuery('#'+config.inputField).after(function(){
return datePickerHTML(dpID);
});
jQuery('#'+config.btn).click(function(){
jQuery('#'+dpID).toggle('slow'); // tjc
}); // tjc
}
我怀疑dpID
事是主要的错误。我已经通过在函数中创建一个变量来修复它,该变量是封闭函数继承的访问权限(因为它们是闭包)。
HTH