在对象文字的值内访问用户输入

时间:2013-01-17 03:38:23

标签: javascript object object-literal

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

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

填充textareas的文本在每个复选框的几个对象文字中引用。这很好用,网站很有用。

在我的对象文字中,我有名称:值对,其中'值'是一串文字。我一直试图在某个名称中包含一个变量:值对没有成功。这总是会破坏脚本,因为变量永远不会定义/有一个' null'页面加载值。

例如,

而不是

    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'
}

我的问题是,在脚本中其他位置引用的变量是否可以合并到对象文字中的name:value对中?

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

2 个答案:

答案 0 :(得分:0)

简短的回答是肯定的。这是一个有效的例子:

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

正如我在评论中提到的,您的具体示例有一些语法错误,因此修复这些错误可能会纠正您的问题。

答案 1 :(得分: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."