【问题标题】:How to create functional Methods [duplicate]如何创建功能方法[重复]
【发布时间】:2015-01-17 12:51:15
【问题描述】:

我想要实现的是创建一个如下所示的自定义函数:

access('h1').content('Hello World');

这就是我尝试实现的方式:

function access(Tag)
{
  var Element = document.getElementsByTagName(Tag)[0];

  this.content = function(Content)
  {
     if (Content !== undefined)
          return Element.innerHTML = Content;
     else return Element.innerHTML;
  }

  return Element;
}

所以这个函数应该是在改变内容或只是返回它的边缘。 不幸的是,它不能以这种方式工作。

到目前为止,我玩了大约一个小时来重写它并自己找到解决方案,但我没有成功,我也不知道如何向谷歌描述这个问题。

我该如何解决呢?

【问题讨论】:

  • 只返回this 或在最后执行操作的元素。
  • 逻辑运算符有问题,!==应该是!=
  • Daniel,看起来你来自C#或其他类似的语言,而JS非常不同。你应该阅读this
  • 这绝对不叫“函数式方法”

标签: javascript function methods


【解决方案1】:

在您的代码中将this 替换为Element

function access(Tag)
    {
      var Element = document.getElementsByTagName(Tag)[0];
    
      Element.content = function(Content)
      {
         if (Content !== undefined)
              return Element.innerHTML = Content;
         else return Element.innerHTML;
      }
    
      return Element;
    }
    
access('h1').content('Hello World');
<h1>Hello</h1>

或者试试这样的。

function access(Tag)
    {
      var Element = document.getElementsByTagName(Tag)[0];
    
      var content = function(Content)
      {
         if (Content !== undefined)
              return Element.innerHTML = Content;
         else return Element.innerHTML;
      }
    
      return {content: content};
    }
    
access('h1').content('Hello World');
<h1>Hello</h1>

【讨论】:

  • 谢谢。第二种方式对我有用
猜你喜欢
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多