【问题标题】:Troubleshooting jQuery isssues dynamically adding buttons [object HTMLdocument] [duplicate]解决 jQuery 问题动态添加按钮 [object HTMLdocument] [重复]
【发布时间】:2020-08-06 22:32:56
【问题描述】:

我目前正在使用 jQuery 构建一个计算器界面,并且在创建我的按钮时遇到了问题。我能够构建一个函数来动态地向计算器添加按钮,并且能够成功地创建单个按钮,但是当我尝试使用 jQuery.each 创建数字按钮时,每个按钮上显示的文本是 [object HTMLdocument] 而不是实际数字,我不确定如何找到解决方法。我做了一些谷歌搜索,目前还没有找到任何解决方案。如果有人能够帮助缓解我的问题,甚至为我指明正确的方向,那将是一个巨大的帮助!

$.fn.addButton = function(html, className, onclick) {
  $('<button />', {
    html: html,
    'class': 'button ' + className,
    click: onclick
    }).appendTo(this);
  return this;
}

var addNumberButton = function(num) {
  $numbers.addButton(num, 'number ' + (num === '.' ? 'dot' : 'number-' + num), () => {
    if($input.text().match(/\./) && num == '.') return;
    if($input.text() == 0 && num != '.' || $input.data('clearOnInput')) {
      $input.text('');
    }
    $input.data({clearOnInput: false});
    $input.text($input.text() + $(this).text());
  })
  };

$.each('7894561230.'.split(''), () => {
  addNumberButton(this.toString())
});

抱歉,如果我的问题表达得不够清楚,我对 jQuery 和 JS 还是很陌生。

提前感谢您的帮助!

这是完整笔的链接:https://codepen.io/tazmancooks/pen/dyMPOLr

【问题讨论】:

    标签: javascript html jquery calculator


    【解决方案1】:

    发布后不久就找到了解决方案,问题是在我的 .each 函数中使用了“this”

    $.each('7894561230.'.split(''), (itm) => {
      addNumberButton(itm.toString())
    });
    

    【讨论】:

    • 详细的原因是箭头函数不会改变 this 指向的内容。
    • 另外作为旁注,.toString() 是不必要的。
    猜你喜欢
    • 2011-11-07
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    相关资源
    最近更新 更多