第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我可以在 Javascript 的局部函數(shù)中訪問全局變量嗎?

我可以在 Javascript 的局部函數(shù)中訪問全局變量嗎?

江戶川亂折騰 2023-04-01 16:27:25
我正在嘗試訪問變量name、email、pass,但每次我嘗試這樣做時,User.NAME、User.Email_ID和User.PASSWORD都有空值。我不應(yīng)該能夠在全球范圍內(nèi)使用這 3 個變量嗎?<html><head><title>Document</title></head><body bgcolor="yellow">  <input type="text" id="name"><br>  <input type="email" id="mail"><br>  <input type="password" id="pass"><br>  <button onclick="Register()">Register</button>  <button onclick="Show()">Show in console</button> <br>  <div id="view" style="background-color: red; color:white; font-family: algerian; text-align: center;"></div>  <script>  const student=[];  var name= document.getElementById("name").value;  var mail= document.getElementById("mail").value;  var pass= document.getElementById("pass").value;  var Register = function() {      let User=JSON.parse(`{"NAME":"`+name+`", "EMAIL_ID":"`+mail+`", "PASSWORD":"`+pass+`"}`);      console.log(User);      student.push(User);  }  function Show() {      setTimeout(function() {          let n=student.length;           var text="";          for (let i = 0; i < n; i++) {              text=text+"Name="+student[i].NAME+", Email="+student[i].EMAIL_ID+", Password="+student[i].PASSWORD+"<br>";          }          document.getElementById("view").innerHTML=text;    }, 2000);      }  </script></body></html>
查看完整描述

2 回答

?
萬千封印

TA貢獻(xiàn)1891條經(jīng)驗 獲得超3個贊

是的,絕對可以。


您出錯的地方是您過早地分配了輸入的值。


讓我們來看看。


var name= document.getElementById("name").value;

var mail= document.getElementById("mail").value;

var pass= document.getElementById("pass").value;

當(dāng)瀏覽器解析您的代碼時,它會立即為變量分配輸入值,并且此時它包含空值。


您此時只想像這樣引用輸入元素。


var userName= document.getElementById("name"); // note we change the variable from name to userName hence we cannot uses "name" as a variable 

var mail= document.getElementById("mail");

var pass= document.getElementById("pass");

并獲取 register() 函數(shù)中元素的值。


嘗試查看整個代碼:


const students = [];

    let userName = document.getElementById('name')

    let mail = document.getElementById('mail')

    let pass = document.getElementById('pass')



    function register() {

      let user = { name: userName.value, email_id: mail.value, pass: pass.value };

      console.log(user);

      students.push(user);

    }


    function show() {

      setTimeout(function () {

        let text = '';

        for (const student of students) {

          text = `Name=${student.name}, Email=${student.email_id}, Password=${student.pass} <br>`

        }

        document.getElementById("view").innerHTML = text;

      }, 2000);

    }


查看完整回答
反對 回復(fù) 2023-04-01
?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

問題是您在頁面加載時獲取輸入值,而不是在單擊“注冊”按鈕時獲取輸入值。


所以將這些行移動到Register函數(shù)中。


我必須提到,JSON.parse在自建字符串上使用是一種反模式。您應(yīng)該使用普通的舊對象文字。


不太重要,但通常的做法是對變量使用駝峰命名法,并為構(gòu)造函數(shù)/類保留 PascalCase。所以重命名User為user. 這同樣適用于屬性,但我讓它們保持原樣,因為它會影響您的其他代碼:


  var Register = function() {

      var name= document.getElementById("name").value;

      var mail= document.getElementById("mail").value;

      var pass= document.getElementById("pass").value;

      let user= { "NAME": name, "EMAIL_ID": mail, "PASSWORD": pass };

      console.log(user);

      student.push(user);

  }


查看完整回答
反對 回復(fù) 2023-04-01
  • 2 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號