0

これは私のhtmlです:

<form>
<input type='text' name='campo1' value='valor0'/>
<input type='text' name='campo2' value='valor1'/>
<input type='text' name='campo3' value='valor2'/>
<input type='text' name='campo4' value='valor3'/>
<input type='text' name='campo5' value='valor4'/>
<input type='text' name='campo6' value='valor5'/>
<input type="button" onclick="inpt();">
</form>

文字列を作成して別の関数に渡す関数を作成しました 。文字列には、入力名に一致文字列 'campos' を持つ入力テキストのすべての値が含まれています。

<script type="text/javascript">
var tags_inpt = new Array();
var param = "";;
function inpt() {
tags_inpt=document.getElementsByTagName('input');
var i;
for (i=0; i<tags_inpt.length; i++) {
if ((tags_inpt[i].type=='text')&&(tags_inpt[i].name.match(/campo/))){
param += '"' +tags_inpt[i].value +'",';
}
}
alert(param + '"A"'); // this print -> "valor0","valor1","valor2","valor3","valor4","valor5","A" OK!!
// call funcion2()
funcion2("valor0","valor1","valor2","valor3","valor4","valor5","A"); // this result in valor1 in funcion2() OK!!
funcion2(param + '"A"'); // this return 'undefined' --> BAD
}

function funcion2(a,b,c,d,e,f,g){
var z = b;
alert (z);
}
</script>

param 変数を使用して引数を動的に に渡すとfuncion2()、未定義の値が得られます。

これを作る正しい方法は何ですか?

ありがとう

4

2 に答える 2

2

これを試して:

funcion2.apply(window, (param + ',"A"').split(",") );

デモを見る

于 2012-05-20T05:35:50.590 に答える
1

これには文字列連結を使用しないでください。入力によってはエラーが発生しやすくなります。代わりに配列を使用します。

<script type="text/javascript">
function inpt() {
  var tags_inpt = document.getElementsByTagName('input');
  var matches = [];
  for (var i=0; i<tags_inpt.length; ++i) {
    if ((tags_inpt[i].type=='text') && (tags_inpt[i].name.match(/campo/))){
      matches.push(tags_inpt[i].value);
    }
  }
  matches.push('A');
  funcion2.apply(this, matches);
}

function funcion2(a,b,c,d,e,f,g) {
  var z = b;
  alert (z);
}
</script>
于 2012-05-20T05:37:14.753 に答える