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

我认为您有语法错误。您没有关闭第一行和第二行的括号。

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 回答