コードを確認してください:
の
<form id="url" action='changesrc('main', target)' method="post"><div id=target><input type="text" name="target" id="target" size="65"></div></form>
あなたが持っていaction='changesrc('main', target)'
ます。属性は二重引用符で囲む必要がaction="changesrc('main', target)"
あるため、そうする必要があります。一重引用符で囲む必要がある場合は、他の一重引用符をエスケープする必要があります。
ただし、target
属性はフォームの送信先のファイルです。changesrc
フォームが送信されているときに実行したいので、それはonsubmit="changesrc('main',target)"
です。
しかし、それから私たちは持っていonsubmit="changesrc('main', target)"
ます。ただし、未定義の変数の代わりにtarget
、入力の値が必要ですid="target"
。次に、onsubmit="changesrc('main', document.getElementById('target').value)"
です。しかし、その関数を呼び出した後、フォームをサーバーに送信したくないと思うので、onsubmit="changesrc('main',document.getElementById('target').value);return false;"
しかし、問題は、で2つの要素があることですid="target"
。したがって、から削除し<div>
ます。
次に、あなたは
function changesrc(main, url) {
document.getElementById('main').setAttribute('src', url);
}
まあ、それは動作しますが、パラメータを使用していませんmain
。私はあなたが欲しいと思います
function changesrc(main, url) {
document.getElementById(main).setAttribute('src', url);
}
最終的なコードは次のとおりです。
HTML:
<form id="url" onsubmit="changesrc('main',document.getElementById('target').value);return false;" method="post">
<div>
<input type="text" name="target" id="target" size="65">
</div>
</form>
<div id="frame">
<iframe id="main" name="main" type="text/html" src="" frameborder="0" allowtransparency="true"></iframe>
</div>
JavaScript:
function changesrc(main, url) {
document.getElementById(main).setAttribute('src', url);
}
あなたはここでそれを見ることができます:http://jsfiddle.net/UsGJb/