人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptでelement.innertHTML = ’hoge’のように、elementの中身を書き換える際に、その中身に別のjavascriptを記述し、実行させることは可能でしょうか。

●質問者: waf
●カテゴリ:ウェブ制作
✍キーワード:hoge JavaScript 記述
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● izayoimizuki
●5ポイント

クオーテーションに囲まれている限り

ただの文字列として扱われます。

JavaScriptの構造上は可です。

ただクオーテーションの入れ子の際に

シングルとダブルを使い分けても

クオーテーションのエスケープが

仕切れなくなるかもしれません。

◎質問者からの返答

具体的な例を教えていただけると助かります。


2 ● mady
●50ポイント

質問の説明が簡単なので、意図を十分に汲み取れているかわかりませんが…。

javascriptは読み込み時にメモリにプログラムコードを読み込みそこにアクセスして実行します。

innertHTMLでそこにjavascriptのコードを書き込んでもメモリ上のコードは変更されないので意味がありません。

その意味で質問にある事が可能かというと、直接的には不可能です。


しかしwafさんのおそらくやりたいであろうことは実現できます。

それは関数を動的作成を利用する方法です。

関数の新規作成や内容の変更を行う事ができます。

これを行った後に、その関数をすぐに実行というようにすれば、お望みの挙動を実現できると思います。


作成したサンプルコードをそのまま添付しておきます。

関数の動的作成の方法は2通りあります。

私は後者のほうがわかりやすいと思います。


makeFunctionボタンを押す前にnewFunction2をおすと

「そんな関数はない」とjavascriptエラーが出ます。


<html>

<head>

<script>

function makeFunction() {

document.all.sec1.innerHTML = ”<p>newFunctionとnewFunction2をつくったよ。</p>”;

newFunction = new Function(’param1’, ’param2’, ’alert(param1 + param2);’);

newFunction2 = function(param1, param2){alert(param1 + param2);}

}


function newFunction() {

alert(”古い関数”);

}

</script>

</head>


<body onload=””>


<div id=”sec1”></div>

<input type=”button” onclick=”makeFunction()” value=”makeFunction”>

<input type=”button” onclick=”newFunction(’ok’, ’??’)” value=”newFunction”>

<input type=”button” onclick=”newFunction2(’ok2’, ’!!’)” value=”newFunction2”>


</body>

</html>

◎質問者からの返答

なるほどなるほど。関数の動的生成とうのができるのですね。

確かにこれを使えば考えていることができそうな気もします。


3 ● andi
●50ポイント

設定した中身を再取得し、evalしてやれば実行できます。


<div id=”hoge”>abc</div>

<script>

o = document.getElementById(”hoge”);

o.innerHTML = ’alert(”hello”)’;

eval(o.innerHTML);

</script>

◎質問者からの返答

なるほど、evalというのがあるのですね。これも使えそうです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ