Javascript不能在一个命令中使用函数参数

时间:2015-03-30 01:55:20

标签: javascript

我有一个表单(在ColdFusion程序中 - 并不重要)有两个提交按钮(它们看起来彼此完全不同),它们根据点击的按钮提交到不同的程序。表格如下:

    <form   name       = "pers3aa"
            action     = "" 
            method     = "post" 
            onkeypress = "return event.keyCode != 13;"
            onsubmit   = "return subpers3aa('#coltop#');"> 

每个按钮调用一个Javascript函数来设置动作 - 它们看起来像这样:

   <input type   = "Submit"
          name   = "subpers4" 
          class  = "submitbut" 
          value  = "Submit" 
      onclick = "persaasubmit('person4aa.cfm')" >

   <input type   = "Submit"
          id     = "delbut" 
          class  = "onoffbut" 
          value  = "Delete this Value"
      onclick = "persaasubmit('persdel.cfm')">

javascript函数persaasubmit是:

   function persaasubmit(target) {
   document.pers3aa.action = target;
   }//end function persaasubmit

到目前为止,这么好 - 这很有效。但是,在另一个程序中,我有一个不同的形式“xrefform”,我提交了类似的功能:

  function aasubmit(target) {
  document.xrefform.action = target;
  }//end function aasubmit

这种情况在我的整个系统中都会发生,并且各种javascript提交功能正在激增。所以我尝试通过将表单名称作为参数发送来组合它们:

 function generalsubmit(formname, target) {
  document.formname.action = target;
  }//end function generalsubmit

这不起作用。我推断Javascript找不到名为“formname”的表单,因此它不提交任何内容。我想可能有Javascript提交传递给它的formname的语法,但我不知道那可能是什么。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

在对象文档中有一个&#39;表格&#39;阵列。您可以访问特定表单:

document.forms['myform']

答案 1 :(得分:0)

你走在正确的轨道上;但是,这不是点符号在JavaScript中的工作原理。

考虑一下:

var someVar = "Foo Bar",
    someObject = { someVar: someVar };
//  someObject = {"someVar": "Foo Bar"}

someObject[someVar] == undefined
// Resolves to the 'Foo Bar' property in someObject

someObject.someVar == 'Foo Bar'
// Resolves to the 'someVar' property in someObject

someObject['someVar'] = 'Foo Bar'
// Resolves to t 'someVar' property in someObject

这可以作为您问题中函数的直接替换:

function generalsubmit(form, target) {
    form = document.forms[form];
    if (form) {
        form.target = target;  
    }
}