如何在函数中调用函数?

时间:2011-07-26 23:54:05

标签: 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 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;
  }

2 个答案:

答案 0 :(得分:1)

&& (逻辑AND运算符)从左到右处理。如果任何表达式返回false,则返回该值。如果除最后一个之外的所有都返回true,则返回最后一个表达式的值(无论是true还是false)。

所以如果没有调用 i3c ,那是因为前面一个调用的返回值是falsey,即它的类型转换为false,所以它可能是0,''(空string),undefined,NaN,null,...我可能已经离开了一个。

修改

正如帕特里克所评论的那样:

  c.setAttribute("class","b");

将在IE中失败。不要将 setAttribute 用于标准属性,而是使用DOM属性:

c.href = d[2].value;   
c.name = "a1";   
c.className = "b";

更快,更少忙。

答案 1 :(得分:0)

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 = '';
    })();
}

这可能有用,我想c0和c4返回true / false。这样他们更容易阅读。如果他们返回true,继续下一个并且不返回。

在i3c功能中,您声明 a 两次!

查看评论以获取更多详细信息。

相关问题