【问题标题】:Javascript VariablesJavascript 变量
【发布时间】:2026-02-14 00:10:02
【问题描述】:

为什么surveyName的值没有变化?

<script type = 'text/javascript'>
    surveyName = "catNull";
    function test(){
        window['surveyName'] = "catTest";
    }
</script>

</head>
<body>

    <input onclick = 'test()' id = 'cat' class = 'test' type = 'button' value = 'category' />

<script>
document.write('<input id = "survey" class = "test" type = "button" value = "'+surveyName+'" />');
</script>

【问题讨论】:

  • 在你点击按钮之前它不会改变。
  • 如果网页中的变量发生了变化,但没有人看到它,它真的改变了吗?
  • SLaks,你的意思是,JavaScript 版本的薛定谔猫? :)
  • 这里会发生的是一个按钮将被写入一个值“catNull”,当您单击它时,surveyName 变量会发生变化,但这不会影响输入按钮的值。为此,您需要类似 document.getElementById('survey').value = "catTest"; 的东西。 JavaScript 变量不会以这种方式自动绑定到 DOM。

标签: javascript events variables global local


【解决方案1】:

它确实改变了。

但是,您永远不会观察到变化。

【讨论】:

    【解决方案2】:

    因为你不改变input对象的值,只改变变量。

    元素独立于变量。 如果你想改变浏览器显示的内容,你必须这样做:

    document.getElementById("...").value = window.surveyName;
    

    【讨论】:

    • 欢迎。在堆栈溢出时,您可以通过单击向上箭头说“谢谢”。或者绿色复选标记表示非常感谢:)
    【解决方案3】:

    因为你还没有点击输入。

    【讨论】:

      【解决方案4】:

      确实如此。但是您已经将变量输出到页面,并且您输出的内容并没有改变。

      如果你想改变input的值:

      document.getElementById("survey").value = "new value";
      

      因为你已经为元素分配了id"survey",所以你可以通过传入id 来检索元素,并使用元素的value property 来设置值。

      【讨论】: