0

私はデバッガー ユーティリティを作成して、再デプロイの面倒なプロセスを実行せずにデバッグを支援し、それをテストするためにページに移動する必要はありません。そのため、さまざまなボタンから呼び出される以下の関数を作成しました。

     function updateTestCode()
    {
        $("script[for='testing']").html('');
        alert('Adding function ' + $('#_testArea').val());
        $("script[for='testing']").append($('#_testArea').val());



    }

function checkCode()
{
    alert('Calling Function ');
    try{
        validateFields();
    }catch(err)
    {
        form.showDebugMsg("Error When Running Script " + err);
    }
}

function generateScriptCode()
{
    $('#_testArea').val($("script[for='testing']").html());
}

ここでやりたかったことは、以下の関数の値を更新して、再デプロイせずに使用できるようにすることだけです。

<script type="text/javascript" for='testing'>
function validateFields()
{
    alert('Hello World');

}</script>

問題は、Firefox がコードを更新して (IE がエラーをスロー)、それを取得できることです。しかし、スクリプトをクリックして実行しようとすると、古い関数の結果が表示されます。

私が間違っている可能性のあるアイデアはありますか???

4

1 に答える 1

0

これは、同じスクリプト タグを使用し、内部テキストを変更しているためです。新しいスクリプト タグを追加する必要があります。

scriptContent = "... function ...";

// delete old tag
$("#testScript").remove();

// add a new one
$("<script id='testScript'/>").text(scriptContent).appendTo("head");

append()また、関数で行っているように、要素にテキストを追加するために使用することはできませんupdateTestCode()。を使用する必要がありtext()ます。

// use text(), not append()
$("script[for='testing']").text($('#_testArea').val());

ここで実際の例: http://jsfiddle.net/MtY3h/

于 2012-08-04T11:30:49.887 に答える