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

下記のソースがエラーになります。
function test_aa(){
var idName = test
var aa = 1
alert(Output_Length(idName,aa))
eval(Output_Length(idName,aa)) = "ほら"
}
function Output_Length(idName,aa){
switch (aa) {
case "1":
return "document.getElementById('"+idName+"')."+"value"
case "2":
return "document.getElementById('"+idName+"')."+"innerHTML"
default:
alert("1111111111")
}
}

Output_Lengthに渡している引数で、
idに返ってくる形式を設定したいのですが
どうしたらいいでしょうか?


●質問者: hopefully
●カテゴリ:就職・転職 ウェブ制作
✍キーワード:AA CASE e+ switch test
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GEN111
●10ポイント
var idName = test
 ↓
var idName = 'test'

とりあえずこれでは。

◎質問者からの返答

すいません。そこは自分の

ミスです。

return "document.getElementById('"+idName+"')."+"value"と

eval(Output_Length(idName,aa)) = "ほら"

ではだめで、

return "document.getElementById('"+idName+"')"と

eval(Output_Length(idName,aa)).value = "ほら"

なら動くんですよね。


2 ● じゃっくそにっく
●60ポイント

いくつかミスが見受けられます。

注意点をコメントの部分に書きました。

<html>
<head>
</head>
<body>
<div id="test"></div>
<script type="text/javascript">
<!--
//[[ 注意点 ]]
// ■実行分の末尾には;をつけてください
// ■switch文のcase節には、 一応最後にbreak; を入れます。
// (そうしないとそれより下のcaseに通り抜けたときに混乱します。)
// ■文字列と数値の区別を行ってください。
// aa=2のように、を数値にしたなら、case 1 , case 2 になるべきで、
// aa="2"のように、文字列にしたなら、case "1" , case "2" になるべきです
//
// ■ id名は文字列なので、idNameのtestは"test"にしてください
// ■ evalの戻り値は参照ではないので、代入の対象にはできません。
// evalに読み込ませる文字列文に、代入の左辺を加えて、evalする形なら可能です。
//
function test_aa()
{
var idName = "test";
var aa = 2;
str = Output_Length(idName,aa);
str += "=";
str += "\"ほら\"";
alert(str);

eval(str);
}
function Output_Length(idName,aa)
{
switch (aa) {
case 1:
return "document.getElementById('" +idName+ "')."+"value";
break;
case 2:
return "document.getElementById('"+idName+ "')."+"innerHTML";
break;
default:
alert("1111111111")
}
}

// テスト
test_aa();
//-->
</script>
</body>
</html>
◎質問者からの返答

出来ました。ありがとうございます。

関連質問


●質問をもっと探す●



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