创建一个字符串(文本),声明变量及其值,以便在Javascript中使用

Create a string (text) that declares variable and its value, for use in Javascript

本文关键字:Javascript 变量 一个 字符串 文本 创建 声明      更新时间:2023-09-26

我正在处理需要具有可变动态部分的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;

工作?

你的意思是神奇地创建全局变量吗?

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);

我认为您有语法错误。你没有把第一行和第二行的括号括起来。

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

像你试图做的那样使用JS评估也是一种糟糕的形式。如果你真的想为每个页面元素创建一个返回页面元素的函数。ECMAScript 5有一些属性,我认为这正是您想要做的事情,但这不是ECMAScript3 JS的工作方式。