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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:izayoimizuki No.1

回答回数302ベストアンサー獲得回数0

ポイント5pt

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

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

JavaScriptの構造上は可です。

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

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

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

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

id:waf

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

2005/05/03 13:36:20
id:mady No.2

回答回数86ベストアンサー獲得回数0

ポイント50pt

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

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>

id:waf

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

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

2005/05/03 19:40:14
id:andi No.3

回答回数448ベストアンサー獲得回数0

ポイント50pt

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


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

<script>

o = document.getElementById(”hoge”);

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

eval(o.innerHTML);

</script>

id:waf

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

2005/05/03 19:44:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません