0

フォームのアクションを動的に変更して、次のページに投稿する代わりにiframeを生成しようとしています。これが私のコードです:

var formItem = document.getElementsByTagName("form")[2].action = createIframe();
function createIframe(){
   ifrm = document.createElement("IFRAME"); 
   ifrm.setAttribute("src", "http://127.0.0.1/myIframe.html"); 
   ifrm.style.width = "50%"; 
   ifrm.style.height = "50%"; 
   document.body.appendChild(ifrm); 
} 

上記のコードでは、iframeがすぐに生成され、ボタンをクリックしてフォームを送信すると、未定義のページが返されます。どこが間違っているのですか?助けてくれてありがとう!

4

3 に答える 3

1

actionそのフォームのをに設定してから""、その関数を呼び出すことをお勧めしonsubmitます。

window.onload = function() {
  var formItem = document.getElementsByTagName("form")[2];
  formItem.setAttribute('action', '');
  formItem.addEventListener('submit', createIframe, false);
}

function createIframe(){
  var ifrm = document.createElement("IFRAME"); 
  ifrm.setAttribute("src", "http://127.0.0.1/myIframe.html"); 
  ifrm.style.width = "50%"; 
  ifrm.style.height = "50%"; 
  document.body.appendChild(ifrm); 
} 
于 2012-08-03T14:43:39.440 に答える
1

このようなことをしようとしていますか?

<form onSubmit="javascript: return createIframe();" action="">
    <input type="submit" value='submit'/>
</form>

<script type="text/javascript">
    function createIframe(){
       ifrm = document.createElement("IFRAME");
       ifrm.setAttribute("src", "http://127.0.0.1/myIframe.html");
       ifrm.style.width = "50%";
       ifrm.style.height = "50%";
       document.body.appendChild(ifrm);
       return false;           
}
</script>
于 2012-08-03T14:52:20.263 に答える
1

その要素のsubmitイベントをリッスンできます。formブラウザが続行しないようにするには、false を返します。

formItem.addEventListener('submit', function (e)) {
    createIframe();
    return false;
});

備考: 最初の行は 2 つのことを行います:指定された要素の属性を の結果に設定formItem ます。actioncreateIframe

于 2012-08-03T14:52:29.720 に答える