0

可変の動的部分が必要な Javascript コードをいじっています。

このJavascriptコードを置き換えようとしています:

var data = document.getElementById('IDofSomeHiddenField').value;
var print = document.getElementById('IDofOutputField');
print.value = data;

次のようなもので:

var encapsulatedData = "var data = document.getElementById('IDofSomeHiddenField').value;";
var encapsulatedPrint = "var print = document.getElementById('IDofOutputField');";

そのため、Javascriptコードのどこかで使用すると:

encapsulatedData;
encapsulatedPrint;

これはうまくいきます:

print.value = data;

しかし、うまくいきません。

宣言する方法はありますか:

var encapsulatedData
var encapsulatedPrint

上で書いたのと同様の方法で、次のようになります。

print.value = data;

動作しますか?

4

2 に答える 2

0

構文エラーがあると思います。1 行目と 2 行目の括弧を閉じていません。

var data = document.getElementById('IDofSomeHiddenField').value;
var print = document.getElementById('IDofOutputField');
print.value = data;

あなたがやろうとしているように JS 評価を使用することも悪い形です。ページ要素を返す各ページ要素の関数を本当に作成したい場合。ECMAScript 5 には、あなたがしようとしていることで探しているものの一種だと思うプロパティがありますが、それは ECMAScript 3 JS が機能する方法ではありません。

于 2013-02-16T23:10:46.880 に答える
0

グローバル変数を魔法のように作成するということですか?

function encapsulatedData() {
    window.data = document.getElementById('IDofSomeHiddenField').value;
}
function encapsulatedPrint() {
    window.print = document.getElementById('IDofOutputField');
}
encapsulatedData();
encapsulatedPrint();

print.value = data;

これはあまり衛生的なコードではありません。あなたが望むことは、おそらくあなたがすべきことではありません。一歩下がって、目標を達成するための手段ではなく、目標が何であるかを話していただけますか? あなたが本当に使いたいのは、クロージャーか、遅延評価のためにファーストクラスの関数を返すことだと思います。

例えば:

function makePrinter(id) {
    var outputfield = document.getElementById(id);
    return function(value) {
        outputfield.value = value;
    }
}
function getValue(id) {
    return document.getElementById('IDofSomeHiddenField').value;
}

var data = getValue('IDofOutputField');
var print = makePrinter('IDofOutputField');

print(data);
于 2013-02-16T23:20:12.967 に答える