Javascript 如何在函数中使用调用函数?
我需要将i3c添加到我的和语句中。我不知道正确的语法。这个密码坏了。匿名函数会更好吗?如果c0()通过,c4()运行,如果c4()通过,我需要i3c()运行,或者i3c中的内容运行Javascript 如何在函数中使用调用函数?,javascript,optimization,Javascript,Optimization,我需要将i3c添加到我的和语句中。我不知道正确的语法。这个密码坏了。匿名函数会更好吗?如果c0()通过,c4()运行,如果c4()通过,我需要i3c()运行,或者i3c中的内容运行 function o1(a,b) { document.getElementById(a).value=b; } function i3() { var a=document.forms['f3'].elements,b='f3e'; c0(a,'Please enter both a til
function o1(a,b)
{
document.getElementById(a).value=b;
}
function i3()
{
var a=document.forms['f3'].elements,b='f3e';
c0(a,'Please enter both a tile and a url',b)&&c4(a[2],'Please enter a valid url',b)&&d0()&&s0('pi3a.php',is('f3'),s2);
o1(f3aa,'');o1(f3bb,'');
}
function d0()
{
var a=document.getElementById('Bb1c'),
b=document.createElement('a'),
c=document.forms['f3'].elements;
b.href=c[2].value;
b.name="a1";
b.className ="b";
b.innerHTML = c[1].value;
a.appendChild(b);
return 1;
}
&&(逻辑AND运算符)从左向右处理。如果任何表达式返回false,则返回该值。如果除最后一个表达式外的所有表达式都返回true,则返回最后一个表达式的值(无论是true还是false)
因此,如果没有调用i3c,这是因为前面调用之一的返回值为false,即它的类型转换为false,因此它可能是0',(空字符串),未定义,NaN,null。。。我可能漏掉了一个
编辑
正如patrick w所评论的,这一行:
c.setAttribute("class","b");
将在IE中失败。不要对标准属性使用setAttribute,而是使用DOM属性:
c.href = d[2].value;
c.name = "a1";
c.className = "b";
更快、更少的bug。函数i3(){
function i3() {
var e = 'f3e';
if ( !(c0(a,'Please enter both a tile and a url',e)) ) { return flase; }
if ( !(c4(a[2],'Please enter a valid url',b)) ) { return flase; }
(function() {
var doc = document,
a = doc.forms.f3.elements,
b = doc.getElementById('Bb1c'),
c = doc.createElement('a'),
d = doc.forms.f3.elements;
c.href = d[2].value;
c.name = "a1";
c.className = "b";
c.innerHTML = d[1].value;
b.appendChild(c);
// which a you need here ???
//var a = is('f3');
var someOtherA = is('f3');
//------------------------
s0('pi3a.php', a, s2);
// if these are part of the form you use in this function
// use
// document.forms[<name>].elements[<name>].value
doc.getElementById('f3aa').value = '';
doc.getElementById('f3bb').value = '';
})();
}
变量e='f3e';
如果(!(c0(a,'Please enter a tile and a url',e)){return flase;}
如果(!(c4(a[2],'Please enter a valid url',b)){return flase;}
(功能(){
var doc=文件,
a=doc.forms.f3.elements,
b=doc.getElementById('Bb1c'),
c=doc.createElement('a'),
d=doc.forms.f3.elements;
c、 href=d[2]。数值;
c、 name=“a1”;
c、 className=“b”;
c、 innerHTML=d[1]。值;
b、 儿童(c);
//你在这里需要哪一个???
//var a=is('f3');
var someOtherA=is('f3');
//------------------------
s0('pi3a.php',a,s2);
//如果这些是您在此函数中使用的表单的一部分
//使用
//document.forms[].elements[].value
doc.getElementById('f3a')。值=“”;
doc.getElementById('f3bb')。值=“”;
})();
}
这可能有效,我想c0和c4返回true/false。这样他们更容易阅读。如果返回true,请继续下一个,不要返回
在i3c函数中,您声明a两次
查看评论了解更多详细信息。什么。。。这个地狱?你传递的是引用,不是函数调用..那是梅西,我不知道这段代码要做什么。为了你的理智起见,给你的函数和变量起一个有意义的名字,这样你就知道它们在做什么了。仅供参考:
c.setAttribute(“class”,“b”)代码>将破坏IE6。你需要用“className”
来代替。如果这不是一个玩笑,那么它一定是我见过的最糟糕的代码。我想这就是我一直在寻找的。如果函数只使用一次,则没有理由命名它。我在之前的一篇文章中被告知,使用AND语句是对if语句的一种微观优化。@Chris Aaker它对生产有好处,但对于开发来说,正如我所说的,它更好——跟踪错误等等。Woa,实际上,一个未命名的函数会占用更多的空间,如果使用“最小化”的函数名。