我总是得到相同的HTML

时间:2010-09-06 15:49:22

标签: javascript jquery html

我需要一些帮助,我正在尝试用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'
});

但是一样,我在这里做错了什么 感谢

2 个答案:

答案 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