0

这些论坛很棒,我得到帮助的贡献者非常有才华。因此,每当我无法解决自己的问题或不理解编程概念时,我都会不断回来。这肯定是后者之一!

在我目前收到的帮助下,我设法开发了一个复杂的表单,最终用户将主要在其中单击一系列复选框并将一些数据输入到几个文本字段中。根据上述操作,这些操作的结果将使用各种文本填充一些文本框。

每个复选框在几个对象字面量中引用填充文本区域的文本。这工作得很好,该网站非常有用。

在我的对象文字中,我有名称:值对,其中“值”是一串文本。我一直试图在某些名称:值对中包含一个变量,但没有成功。这总是会破坏脚本,因为该变量从未定义/在页面加载时具有“空”值。

例如,

代替

    var example = {
var1:'some string',
var2:'some other string'
  }

我试过,

var somevariable = document.getElementById('someId');
var example = {
var1: 'some string' + somevariable + 'some other bit',
var2: 'some other string'
}

我的问题是是否可以将脚本中其他地方引用的变量包含在对象文字中的名称:值对中?

作为参考(因为它是一个相当长的脚本),我的网站是:http ://www.hematogones.com/bmbiopsies.html 。

4

2 回答 2

0

简短的回答是肯定的。这是一个工作示例:

var myStr = "world";
var obj = { var1: "hello " + myStr };
console.log(obj.var1); // Outputs: hello world

正如我在评论中提到的,您的具体示例有几个语法错误,所以也许只是修复这些错误会纠正您的问题。

于 2013-01-17T03:47:53.467 回答
0

对象字面量的诀窍在于它会立即被求值。没有“简单”的方法可以延迟您获得的价值。

var x = "Alice";
var obj = { greeting: "Hello, " + x + "." };
console.log(obj.greeting);  // "Hello, Alice."
x = "Bob";
console.log(obj.greeting);  // "Hello, Alice."
obj = { greeting: "Hello, " + x + "." };
console.log(obj.greeting);  // "Hello, Bob."

稍后再谈:

如果您确实确实需要将变量放入稍后定义的字符串文字中,则可以创建一个内联函数。这样,它不是obj.greeting一个简单的字符串,而是一个您调用的函数(看起来像obj.greeting())。这意味着不是在您声明对象时计算字符串值,而是在调用函数时声明它。这是 Javascript 的一个非常强大的功能,称为“闭包”,您可以花一整天的时间了解您使用它们获得的预期和意外行为。

var x = "Alice";
var obj = { greeting: function() { return "Hello, " + x + "." }};
console.log(obj.greeting());  // "Hello, Alice."
x = "Bob";
console.log(obj.greeting());  // "Hello, Bob."
于 2013-01-17T03:49:44.990 回答