クオーテーションに囲まれている限り
ただの文字列として扱われます。
JavaScriptの構造上は可です。
ただクオーテーションの入れ子の際に
シングルとダブルを使い分けても
クオーテーションのエスケープが
仕切れなくなるかもしれません。
質問の説明が簡単なので、意図を十分に汲み取れているかわかりませんが…。
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>
なるほどなるほど。関数の動的生成とうのができるのですね。
確かにこれを使えば考えていることができそうな気もします。
設定した中身を再取得し、evalしてやれば実行できます。
<div id=”hoge”>abc</div>
<script>
o = document.getElementById(”hoge”);
o.innerHTML = ’alert(”hello”)’;
eval(o.innerHTML);
</script>
なるほど、evalというのがあるのですね。これも使えそうです。
具体的な例を教えていただけると助かります。