首页 > 解决方案 > 从无线电输入全局保存变量

问题描述

具有以下 htmt 和功能。单击按钮后,我无法让 var skinColor 保存“浅色”或“深色”。当我选择一个单选按钮时,我需要如何定义它会全局保存 var ?我得到一个 skinColor 未定义错误,但这就是重点,我正在尝试定义 skinColor。

<input type="radio" id="load_lightskin" name="skin" value="light_skin">
<label for="light_skin">Light Skin</label>

<input type="radio" id="load_darkskin" name="skin" value="dark_skin">
<label for="dark_skin">Dark Skin</label>

<input id="InstallerSettings" type="button" onclick="SkinSettings()" value="Continue Install">

function SkinSettings(){
  switch ($('input[name="skin"]:checked').val()){
    case "light_skin":
      var skinColor = "light";
      load_template();
      break;
    case "dark_skin":
      var skinColor = "dark";
      load_template();
      break;
    default: 
      alert("You must select a skin to continue."); 
    break;
  }
}

标签: jquery

解决方案


您的问题是范围,您可以在此处找到有关范围的信息:https ://www.w3schools.com/js/js_scope.asp

但简而言之,当您在函数内声明变量时,它不能全局访问,您只能在同一个函数上访问它。如果你想从外部访问它,你需要在之前声明它;例子:

let thisVariableIsGlobal = "hello world!";
(function yourFunctionName(){
  let thisVariableIsLocal = "Quick test";
  // You can edit thisVariableIsGlobal here and it will be applied globally, but don't redefine it using the var, let, or const keywords! 
})()

console.log(thisVariableIsGlobal ) // Return hello world!
console.log(thisVariableIsLocal ) // Return undefined

或者您可以使用全局对象,例如 chrome,您可以通过“窗口”对象访问它,但不建议这样做。

例子

(function yourFunctionName(){
      window['thisVariableIsGlobal'] = 'Hello world';
    })()
console.log(thisVariableIsGlobal ) // Return hello world!

推荐阅读