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