誰か助けてくれませんか?
次のコードは機能しますが、残念ながら doSomething() への関数呼び出しが必要です。
<body onload=init()>
</body>
<script>
function Startscreen()
{
this.doSomething(); //why is this call necessary and how else to solve it?
this.startscreenhtml =
" <form onsubmit=doSomething()> " +
" <input type=text /> " +
" </form> ";
document.write(this.startscreenhtml);
}
Startscreen.prototype.doSomething = function()
{
alert(123)
}
</script>
<script>
function init()
{
var startscreen = new Startscreen();
}
</script>
関数 doSomething をオブジェクト Startscreen の関数として保持したいと考えています。
編集: document.write を使い続けたい
できれば、現在行っているように、コンストラクターの外で doSomething を宣言したいと考えています。そうしないと、新しい Startscreen を複数回呼び出すと、同じ関数が複数回作成されると考えられるからです。
ただし、コンストラクター内で関数を宣言するなど、doSomething を呼び出さずにこれを機能させるために多くのことを試みましたが、何も機能しませんでした。コードが上から下に読み取られる場合、宣言する前に「onsubmit」に割り当てるため、関数を認識させるには呼び出しが必要であると思います。
これを解決する方法を知っている人はいますか?