在 JavaScript 函数中访问全局变量
Posted
技术标签:
【中文标题】在 JavaScript 函数中访问全局变量【英文标题】:Accessing global variables in JavaScript functions 【发布时间】:2012-11-02 19:19:58 【问题描述】:我正在使用 C# asp.net mvc3。 在我的一个观点中,假设我声明了一个这样的变量:
@
ViewBag.Title = "title"
string mystr;
我需要在脚本的函数中设置变量 mystr 的值。如何从脚本访问此变量? 假设我有一个类似
的功能<Script type="text/javascript">
function()
var st = "This string is for the global variable"
mystr = st;
</script>
mystr 稍后将在 html 代码中使用,如下所示:
<h2>@mystr</h2>
。
有没有类似的方法从函数中访问变量?
【问题讨论】:
您的 asp.net 代码首先在服务器上执行,然后在客户端上执行,然后执行 JavaScript,所以当您的 js 执行时,您的所有 asp.net 代码都已经运行了。 如果我错了,请纠正我,但@
变量不是用于数据绑定吗?这将发生在服务器端,而 javascript 是客户端。
您可能想了解客户端/服务器关系在网页方面的工作方式。 .NET 试图混淆这个划分,最终让许多开发人员感到困惑。
谢谢。然后我如何在 js 函数中更新像上面的“mystr”这样的变量的值?我的意思是,我如何从函数中访问这个变量?
【参考方案1】:
mystr
在您的示例中是 服务器端 变量,在 cshtml
视图解析期间存在。所以你不能用客户端上的JS代码来影响它。你可以试试这样:
<script type="text/javascript">
window.mystr = @(mystr); // Set value while server side processing.
function()
var st = "This string is for the global variable"
window.mystr = st; // Get/Set value
</script>
并在您需要的任何地方在客户端使用全局变量mystr
。
如果您需要然后通过 JS 设置标题的文本,您可以使用 jQuery 进行设置:
<h2 id="header"></h2>
JS:
$('#header').text(window.mystr);
【讨论】:
可以这样设置window.mystr = @(mystr);
吗?我想像var subpanelData= '@Html.Raw(Json.Encode(ViewData["Data"]))'
这样的东西会有助于从服务器端设置值..以上是关于在 JavaScript 函数中访问全局变量的主要内容,如果未能解决你的问题,请参考以下文章