Javascript 职能范围及;输入/输出所述函数的变量

Javascript 职能范围及;输入/输出所述函数的变量,javascript,Javascript,所以我在学习和尝试一些东西,问题是 我知道在函数外部定义的变量对所有函数都有用,而函数内部的一个变量集则不可用 当我这么做的时候 HTML: <input type="text" name="field" id="field"/> <input type="submit" id="submit" name="submit"/> JS: var results = document.getElementById("field").value; var submitB

所以我在学习和尝试一些东西,问题是

我知道在函数外部定义的变量对所有函数都有用,而函数内部的一个变量集则不可用

当我这么做的时候

HTML

<input type="text" name="field" id="field"/>

<input type="submit" id="submit" name="submit"/>

JS

var results = document.getElementById("field").value;
var submitBtn = document.getElementById("submit");

function pushit(){
    aNames.push(results);
    for(i=0; i<aNames.length; i++){
        document.write(aNames[i] + "<br/>");
    }

    submitBtn.onclick = pushit;
}
var results=document.getElementById(“字段”).value;
var submitBtn=document.getElementById(“提交”);
函数pushit(){
aNames.push(结果);

对于(i=0;i第一个示例中的
results
变量在页面加载时设置,并且从未更改。每次读取时,它的值都相同

在第二个示例中,您每次运行事件时都从输入中获取值;您正在创建一个新变量。因此,您看到了新的值

JavaScript DOM元素是“活动”变量,但字符串不是

例如:

var results = document.getElementById("field");
var submitBtn = document.getElementById("submit");

function pushit(){
    alert(results.results);
}
这是因为
results
是一个“活动”变量。当您访问它时,它始终是最新的DOM元素


当您执行
var results=document.getElementById(“field”).value;
时,现在
results
只是一个字符串;它不再是“活动的”了。

很抱歉,这是一个混乱,我忘记了对编码部分进行“编码”,所以它将所有内容都放在一起。。现在更好,请定义“不工作”.如前所述,没有明显的原因说明为什么第一版中的
结果的重复定义会阻止发布的代码工作。@Alnitak看到了整个编辑历史,混淆了那里发生的事情。啊,这就解释了-你发布的原始代码不是正确的代码!@GGG是的,注意到-我以为Rocket制作了编辑,而不是OP。所以你的意思是,当读取代码时,“result”的值是空的(或者默认值)因此,它的状态不会改变……当按下按钮时,它会再次被检查……明白了!我以为它会一直持续下去,但……在btn按下时,它只检查函数内部的内容!谢谢你清理它。@somdow:很高兴我能帮上忙:)
var results = document.getElementById("field");
var submitBtn = document.getElementById("submit");

function pushit(){
    alert(results.results);
}