Javascript 如何在函数中使用调用函数?

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

我需要将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 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,实际上,一个未命名的函数会占用更多的空间,如果使用“最小化”的函数名。