Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使类接受方法而不预先指定方法?_Javascript_Methods - Fatal编程技术网

Javascript 如何使类接受方法而不预先指定方法?

Javascript 如何使类接受方法而不预先指定方法?,javascript,methods,Javascript,Methods,如果我有这样的东西: function foo(class){ for(i=0; i<(class.length);i++){ return document.getElementsByClassName(class)[i]; } } 它只会对第一个元素执行,我理解为什么会发生这种情况,以及如何使它正确工作,但是我如何使函数获得其他方法,而不在循环中确切地告诉它要做什么,就像这样 foo("someclass").innerHTML="somethin

如果我有这样的东西:

function foo(class){
    for(i=0; i<(class.length);i++){
       return document.getElementsByClassName(class)[i];
    }
}
它只会对第一个元素执行,我理解为什么会发生这种情况,以及如何使它正确工作,但是我如何使函数获得其他方法,而不在循环中确切地告诉它要做什么,就像这样

   foo("someclass").innerHTML="something";//this to put something inside the element
   foo("someclass").style.backgroundColor="#000");// and this to work also
  function foo(class).variableMethod{
for(i=0; i<(class.length);i++){
   document.getElementsByClassName(class)[i].variableMethod;
}
那么,如果可能的话,我如何让函数在不将这些方法放入foo函数循环的情况下完成这项工作呢?有没有办法将这些方法放入这样的变量中

  function foo(class).variableMethod{
for(i=0; i<(class.length);i++){
   document.getElementsByClassName(class)[i].variableMethod;
}
函数foo(类).variableMethod{

对于(i=0;i您可以将函数传递给
foo()
,并让
foo()
使用每个匹配的元素调用该函数:

function foo(className, func)
{
    var elements = document.getElementsByClassName(className);
    for (var i = 0; i < elements.length; ++i) {
        func(elements[i]);
    }
}

您可以将函数传递给
foo()
,并让
foo()
使用每个匹配的元素调用该函数:

function foo(className, func)
{
    var elements = document.getElementsByClassName(className);
    for (var i = 0; i < elements.length; ++i) {
        func(elements[i]);
    }
}

为了补充这里的其他优秀答案,您可以做的一件事是创建一个名为
innerHtml
的重写方法。然后,您可以让innerHtml检查集合以及单个实例,并根据需要进行操作

更新

这里是一个方法链接的快速示例。这里我基本上根据标记名获取元素集合,并使用我使用Javascript
prototype
对象创建的val()方法设置它们的值

function Foo(tagName)
{
    this.collection = document.getElementsByTagName(tagName);
    return this;
}

Foo.prototype.val= function(value){

   for(var i = 0; i < this.collection.length; i++)
   {
       this.collection[i].innerHTML = value;
   }
}


var x = new Foo("li").val("Hello World");
函数Foo(标记名)
{
this.collection=document.getElementsByTagName(标记名);
归还这个;
}
Foo.prototype.val=函数(值){
for(var i=0;i

您可以在这里看到一个有效的演示:

只需添加到其他伟大的答案中,您可以做的一件事是创建一个名为
innerHtml
的覆盖方法。然后,您可以对集合和单个实例进行innerHtml检查,并根据需要进行操作

更新

这里是一个方法链接的快速示例。这里我基本上根据标记名获取元素集合,并使用我使用Javascript
prototype
对象创建的val()方法设置它们的值

function Foo(tagName)
{
    this.collection = document.getElementsByTagName(tagName);
    return this;
}

Foo.prototype.val= function(value){

   for(var i = 0; i < this.collection.length; i++)
   {
       this.collection[i].innerHTML = value;
   }
}


var x = new Foo("li").val("Hello World");
函数Foo(标记名)
{
this.collection=document.getElementsByTagName(标记名);
归还这个;
}
Foo.prototype.val=函数(值){
for(var i=0;i
你可以在这里看到一个工作演示:

我认为它可以做你想做的事情,但是你也可以使用像jQuery这样的框架——这就是它设计的目的。因此你可以做:

$('.className').text('something');
将类为
className
的所有元素的文本设置为某物,或

我认为,用
className

类更改所有元素的背景色可以满足您的需要,但您也可以使用类似jQuery的框架—这是它设计的目的。因此,您可以执行以下操作:

$('.className').text('something');
将类为
className
的所有元素的文本设置为某物,或


要更改类为
className

的所有元素的背景色,是否要应用相同的
innerHTML
(或任何内容)每个元素都有一个特定的类?是的,但是如果有时我需要更改样式,我希望它可以更改样式,而不需要我在for循环someclass[i]中创建另一个类似foo的函数.stylePetre,请参阅下面我的更新答案。这可能会回答您关于jQuery可以执行与您尝试的类似操作的一种方法的问题。那么您是否要应用相同的
innerHTML
(或任何内容)每个元素都有一个特定的类?是的,但是如果有时我需要更改样式,我希望它可以更改样式,而不需要我在for循环someclass[i]中创建另一个类似foo的函数.stylePetre,请查看下面我的更新答案。这可能会回答您关于jQuery可以执行与您尝试的类似操作的一种方法的问题。我知道我可以使用jQuery,但我正在尝试了解jQuery是如何执行此操作的,因为jQuery将一些元素与类一起使用,然后它可以与许多方法一起工作,如.text或.cssy。您可以始终使用让我们看一下jQuery代码,好吗?我试过了,但我不明白,我找不到我要找的部分for@Petre:好的,很公平。您还可以看看Paul Irish的《我从jQuery源代码()中学到的10件事》和Jon Resig的《学习高级Javascript》()我知道我可以使用jquery,但我正在试图弄清楚jquery是如何做到这一点的,因为jquery通过一个类获取一些元素,然后与许多方法一起工作,比如.text或.cssy你可以随时查看jquery代码来了解这一点,对吗?我试过了,但我不明白,我找不到我要查看的部分for@Petre:好的,很公平你还可以看看Paul Irish的《我从jQuery源代码()中学到的10件事》和Jon Resig的《学习高级Javascript》()