有没有更好的方法来编写这些功能?

时间:2011-06-16 15:02:58

标签: javascript

我无论如何都不是javascript程序员,但这一直困扰着我,

是否有更好的方法来编写这两个单独的函数。 在单一功能中?

function showAll()
{
   var collection = getElementsByClassName("dealHolder");
   for (var x = 0; x < collection.length; x++) 
   {
      setParentTrue(collection[x].parentNode);                    
   }
}

function setParentTrue(obj) {
     if (obj.id != "deal") 
     {
          obj.id = "true";
          setParentTrue(obj.parentNode);
     }
     else
     {
        obj.style.display = 'block';
     }
}

我可以在另一个函数中声明一个函数并递归调用它吗?任何时候我需要递归我似乎总是专门为它创建一个单独的功能

为建议干杯

3 个答案:

答案 0 :(得分:1)

function showAll()
{
   var collection = getElementsByClassName("dealHolder"),
       x = 0,
       setParentTrue = function(obj) {
        if (obj.id != "deal") 
        {
            obj.id = "true";
            setParentTrue(obj.parentNode);
        }
        else
        {
            obj.style.display = 'block';
        }
   };
   for (x = 0; x < collection.length; x++) 
   {
      setParentTrue(collection[x].parentNode);                    
   }
}

答案 1 :(得分:1)

是的,你可以在函数中声明一个函数,因为函数是对象。

function showAll()
{

    var setParentTrue = function (obj) {
         if (obj.id != "deal") 
         {
              obj.id = "true";
              setParentTrue(obj.parentNode);
         }
         else
         {
            obj.style.display = 'block';
         }
    }

   var collection = getElementsByClassName("dealHolder");
   for (var x = 0; x < collection.length; x++) 
   {
      setParentTrue(collection[x].parentNode);                    
   }
}

答案 2 :(得分:1)

实际上 - 编写一个单独的函数来保存循环中发生的事情是很好的做法,所以我不会改变你上面的内容。

实际上 - 我不接受 - 在这种情况下,循环中的函数不太可能对其他人有用,所以我会选择下面的一个例子。嵌套在同一个对象中,但仍然是单独的功能。