WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:javascriptの関数呼び出し

0:[投稿] dante [2009/01/12 01:46 ] [環境:windows xp apache,perl]

動的にボタンを作成して、各ボタンを押すと関数が起動する
ようにしたいと考えています。
以下のようにしたのですが関数を認識できないようで困ってます。何がいけないのか教えてください。

※配列maiにはcgiから取得したデータが入っています。

function input_tel(){
 n2.document.forms[1].tel.value=arguments[0];
}

function make_button(){
 var i;
 var str;
 for(i=0;i<mai.length;i++){
     var st0='tel_input('+ mai[i] +')';
     var st1="<input type=button value=" + (i+1) + "." + mai[i] +' onclick='+ st0 +'><br>';
     str=str + st1;
 }
 myFrame.document.open();
 myFrame.document.write(str);
 myFrame.document.close();
}

※結果的には
<input type="button" value="1.080-454-5236" onclick=tel_input('080-454-5236')><br>
<input type="button" value="2.080-454-6345" onclick=tel_input('080-454-6345')><br>

となり、各ボタンを押すとn2という名のformのinputにデータが入るという形にしたいのですが・・・・。



1:[回答] TK [2009/01/12 11:24 ]

>関数を認識できないよう
関数を認識してるかどうかは関数にalert()を仕込んで確認できます。
ex.
function input_tel(){
alert("ok");
n2.document.forms[1].tel.value=arguments[0];
}

function input_tel(){
n2.document.forms[1].tel.value=arguments[0];
}

>n2という名のformの
これを
n2.document.forms[1].tel.value
でやろうとしていますか?


2:[回答] TK [2009/01/12 11:26 ]

ありゃ、余計なものがペーストされてる^^;
二個目の関数は無視でおねがします。


3:[回答] dante [2009/01/12 11:36 ]

ごめんなさい。n2はiframeです。
<frame name=n1><ifrme name=n2>という順序で並んでいて、
n1にボタン作成,n2にデータ入力対象の表示にしたいのです。
このときに、しくじるのです。
試しに以下のように無名関数を定義してやってみたら関数名は関係なくなりましたが、今度はn2が理解できないようです。
alert(1)に置き換えた場合はうまくいくのですが?

 for(i=0;i<mai.length;i++){
     var st1='<input type=button value=' + i +' onclick="n2.document.forms[1].tel.value=3"><br>';
     str=str + st1;
 }


4:[回答] tk [2009/01/12 23:29 ]

アラートが表示されるなら関数はちゃんと呼ばれているということです。

n2はインラインフレームでしたか、そんな気もしてはいましたが^^;
仮に
<iframe id="n2"></iframe>
だったとき

document.getElementById['n2'].contentWindow.document.以下略

となります。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]