2013-02-16 59 views
0

我搞乱了需要具有可变动态部分的Javascript代码。创建一个声明变量及其值的字符串(文本),用于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; 

的作品?

+0

到底什么你在干什么?我无法想象任何你想要的东西是一个好主意的场景!你可以退后一步,更详细地描述你的目标吗? – 2013-02-16 23:13:58

+0

谢谢弗朗西斯。我想做的事情可以在服务器端在C#中完成:'string encapsulatedData =“var data =(document.getElementById('IDofSomeHiddenField')。value;”;'然后你可以添加到JavaScript块(服务器方):'string addtoblock = @“function somename(){...”+ encapsulatedData + @“......};'我在服务器端实现了它,然后将它注入.aspx页面。但是因为JavaScript随着每次回发而改变,所以ScriptManager.RegisterClientScriptBlock只是第一次工作,所以我正在尝试寻找一种解决方法,我在下面给你的评论写了更多的内容: – hugo 2013-02-17 00:47:19

+0

用以下方法创建一个新问题(或者更新当前问题)你的*实际*问题,这实际上是一个ASP问题,而不是一个JS问题。 – 2013-02-17 00:50:47

回答

0

我觉得你有一个语法错误。你不关闭第一和第二行的括号。

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

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

+0

谢谢你,你是对的。但即使我解决这个问题,它也不起作用。 – hugo 2013-02-16 23:28:18

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

我在.aspx页面上有一段Javascript代码。在PostBack上,在后面的C#代码中,我创建了格式为“code”的“随机”字符串“var data = document.getElementById('IDofSomeHiddenField')。value;”放入TextBox的“代码”。回发后,Javascript从TextBox获取值并应使用它。我试图做一些事情,可以在服务器端在C#中完成:('code'string encapsulatedData =“var data =(document.getElementById('IDofSomeHiddenField')。value;”;'code'然后 'code' string addtoblock = @“function somename(){...”+ encapsulatedData + @“......};'code'),但使用Javascript。 – hugo 2013-02-17 00:03:24