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

问题描述

| 无论如何,我不是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\';
     }
}
我可以在另一个函数中声明一个函数并递归调用它吗?每当我需要递归时,我似乎总是为它创建一个单独的函数 为建议喝彩     

解决方法

        
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);                    
   }
}
    ,        是的,您可以在函数内声明一个函数,因为函数是对象。
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);                    
   }
}
    ,        实际上-编写一个单独的函数来保存循环中发生的事情是一种好习惯,因此我不会更改上面的内容。 实际上-不,我不希望这样做-在这种情况下,循环中的函数不太可能对其他任何人都可用,因此我将使用以下示例之一。嵌套在同一对象中,但仍具有独立的功能。