javascript - 定义类后 undefined object

标签 javascript jquery class

我添加了三个按钮并使用单个类对其进行管理。但我收到了这个未定义的错误。

var jQuery = jQuery.noConflict();
jQuery(function(){

   var sampTool = new loadToolBar('pageContent');

   sampTool.addImgBtn("fontMore","img/plus.png");  // Uncaught TypeError: undefined is not a function 
   sampTool.addImgBtn("fontLess","img/minus.png");
   sampTool.addImgBtn("printPage","img/printer.png");


   jQuery('#fontMore').click(function(){
      sampTool.zoom('pageContent','+=2px');
   });


   jQuery('#fontLess').click(function(){
      sampTool.zoom('pageContent','-=2px');

   });

   function loadToolBar(fileBody) // Class definition 
   {
      var toolBar = document.createElement("div");
      toolBar.className = "oasys-toolbar";
      toolBar.id = "oasys-toolbar";
      jQuery(toolBar).insertBefore("#"+fileBody);

   } 

   /*--------------------- Prototypes------------------------*/

   loadToolBar.prototype.addImgBtn = function(itemID,itemPath)
   {

      var newIcon = document.createElement("img");
      newIcon.id=itemID;
      newIcon.src = itemPath;
      newIcon.className = "oasys-toolbar-item oasys-toolbar-btn";
      document.getElementById('oasys-toolbar').appendChild(newIcon);
   }

   loadToolBar.prototype.zoom = function(containerID,size)
   {
      jQuery("#"+containerID+" *").css("font-size",size);
   }



});

提前致谢

最佳答案

当您调用loadToolBar.addImgBtn()时,函数addImgBtn尚未分配给loadToolBar.prototype

您需要运行类声明然后执行它。我会这样写:

var jQuery = jQuery.noConflict();

function loadToolBar(fileBody) // Class definition 
{
  var toolBar = document.createElement("div");
  toolBar.className = "oasys-toolbar";
  toolBar.id = "oasys-toolbar";
  jQuery(toolBar).insertBefore("#" + fileBody);

}

/*--------------------- Prototypes------------------------*/

loadToolBar.prototype.addImgBtn = function(itemID, itemPath) {

  var newIcon = document.createElement("img");
  newIcon.id = itemID;
  newIcon.src = itemPath;
  newIcon.className = "oasys-toolbar-item oasys-toolbar-btn";
  document.getElementById('oasys-toolbar').appendChild(newIcon);
};

loadToolBar.prototype.zoom = function(containerID, size) {
  jQuery("#" + containerID + " *").css("font-size", size);
};

jQuery(function() {
  // This function runs after `document.ready`. But your constrator don't need to declare after dom ready 

  var sampTool = new loadToolBar('pageContent');
  sampTool.addImgBtn("fontMore", "img/plus.png"); // Uncaught TypeError: undefined is not a function 
  sampTool.addImgBtn("fontLess", "img/minus.png");
  sampTool.addImgBtn("printPage", "img/printer.png");

  jQuery('#fontMore').click(function() {
    sampTool.zoom('pageContent', '+=2px');
  });

  jQuery('#fontLess').click(function() {
    sampTool.zoom('pageContent', '-=2px');

  });
});

关于javascript - 定义类后 undefined object ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26709848/

相关文章:

javascript - 覆盖 module.exports 中键的值

javascript - 浮点图数据点数量

c# - 从 ASP.NET C# 类页面实例化 C# 类

c++ - 模板类中的 Typedef 不起作用

java - 无法将值传递给 Java 中的 ArrayList

javascript - 跨浏览器 : detect blur event on window

javascript - 通过 HTML 输入在 AJAX 中构建 URL

javascript - CSS 拉伸(stretch)容器到最宽隐藏子元素的宽度

javascript - 函数处理 jQuery 事件和参数?

jquery - Fancybox 2.1.5 在 Safari 中无法正常工作