繁体   English   中英

在JavaScript函数之外访问内部函数变量

[英]Access inner function variable outside JavaScript function

我需要在函数外部访问变量,

例:

var testData = "LoadedVariable";
    function loadFunction(){
        testData = "DynamicVariable";
    }
    alert(testData);

<div onclick="loadFunction();" style="cursor: pointer;">
turn around click
</div>

按照上面的示例,在页面加载时,我可以访问testData作为“ LoadedVariable”。 但是,当我单击按钮时,testData需要更改为“ DynamicVariable”。

这是针对单个Web应用程序应用程序的动态聊天功能。

当我单击按钮时如何触发警报。 我知道我们可以在函数内部提醒它。 但是我需要以上述示例格式实现结果。

提前致谢。

我在JSFIDDLE中添加了相同的内容

工作实例

http://jsfiddle.net/yw6pf87s/1/

function loadFunction() {
  testData = "DynamicVariable";
  return testData;
}

alert(loadFunction());

我的推荐

function loadFunction(newValue){
  testData = newValue;
  alert(testData);
}

HTML

<div onclick="loadFunction('New Value');" style="cursor: pointer;">turn around click</div>

您的问题不是可变范围界定之一。 实际上,如果您测试示例代码:

var testData = "LoadedVariable";
function loadFunction(){
    testData = "DynamicVariable";
}
alert(testData);

您会看到它实际上正常工作:它会警告“ LoadedVariable”。

您的问题实际上是一个时机问题:

<div onclick="loadFunction();" style="cursor: pointer;">

这就是说,“运行更改我的变量的函数”……而不是“运行更改我的变量并警告它的函数”。 您只有一个alert ,这是在页面加载时发生的,因此,当您的div被单击并且您调用loadFunction什么都不会发生。 在后台,您的testData变量已变为“ DynamicVariable”,如果没有alert ,您将无法分辨。

正如其他人所建议的,您可以通过在函数内部移动警报来解决此计时问题。

只需使用单独的函数作为点击处理程序即可。 让点击处理程序调用loadFunction ,然后发出alert

<div id="turnaround" style="cursor: pointer;">
turn around click
</div>

<script>
var testData = "LoadedVariable",
    loadFunction = function () {
        testData = "DynamicVariable";
    },
    clickHandler = function () {
      loadFunction();
      alert(testData);
    },
    turnaround = document.getElementById('turnaround');

turnaround.addEventListener('click', clickHandler, false);
</script>

的jsfiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM