2016-11-05 5 views
0

У меня проблема с моей программой. У меня была переменная tempName. Это глобальная переменная. Я установил для него значение в функции «ktDN» и получил значение в другой функции «loadMain», но имеет «неопределенный». Пожалуйста, помогите мне! Большое спасибо!!Глобальная переменная в Javascript, повторное неправильное значение

var tempName; 
var tempPosititon; 
function ktDN() { 
    for(var x=0; x < mangNhanVien.length; x++) 
    { 
     if(document.getElementById("txtUser").value == mangNhanVien[x].user && 
      document.getElementById("txtPass").value == mangNhanVien[x].pass) 
     { 
      tempName = mangNhanVien[x].ten; 
      tempPosititon = mangNhanVien[x].position; 
      alert(tempName +" "+tempPosititon);//debug ==> right value 
      //alert("Dang nhap thanh cong"); 
      window.open("../HTML/main.html"); 
      window.open('','_self').close(); 
      return true; 
     } 
    } 
    alert("Tai khoan dang nhap khong chinh xac"); 
} 
function logout() { 
    window.open("../HTML/login.html"); 
    window.open('','_self').close(); 
} 
function loadMain() { 
    document.getElementById("lblUser").innerHTML = tempName; //==> wrong value,   it is "undefined" 
    document.getElementById("lblPosition").innerHTML = tempPosititon; 
    var s = "<label for='lstNV'>Tìm kiếm:</label><input list='lstNV'><datalist id='lstNV'>"; 
    for(x in mangNhanVien) 
    { 
     s += "<option value='"+mangNhanVien[x].ten+"'></option>"; 
    } 
    s += "</datalist>"; 
    document.getElementById("timNV").innerHTML = s; 
    var tbl = "<table><tr><th>STT</th><th>HỌ TÊN</th><th>GIỚI TÍNH</th><th>NGÀY SINH</th><th>CMND</th><th>ĐỊA CHỈ</th><th>SỐ ĐIỆN THOẠI</th><th>NGÀY VÀO LÀM</th><th>NGÀY NGHỈ</th></tr>" 
    for(x in mangNhanVien) 
    { 
     tbl += "<tr><td>"+mangNhanVien[x].maSo+"</td><td>"+mangNhanVien[x].ten+"</td><td>"+mangNhanVien[x].gioiTinh+"</td><td>"+mangNhanVien[x].ngaySinh+"</td><td>"+mangNhanVien[x].CMND+"</td><td>"+mangNhanVien[x].diaChi+"</td><td>"+mangNhanVien[x].sdt+"</td><td>"+mangNhanVien[x].ngayVaoLam+"</td><td>"+mangNhanVien[x].ngayNghi+"</td></tr>"; 
    } 
    tbl += "</table>"; 
    document.getElementById("tblNV").innerHTML = tbl; 
} 
+1

где KDTN() называется, он вызывается перед loadMain, если не tempName будет неопределенным, так как вы не дали никакой ценности tempName intially – Geeky

+0

'mangNhanVien' содержит пароли открытого текста других пользователей? И доступно ли на клиенте? – Andreas

+0

'mangNhanVien' имеет 9 элементов, но один из них имеет пользователя и пароль – Elaine

ответ

1

Вам необходимо убедиться, что вы должны вызвать функцию ktDN перед использованием значения глобальной переменной в функции loadMain.

использовать также значение по умолчанию для tempName как:

var tempName = 'default value'; 
+0

Я уверен, что функция ktDN вызывается перед функцией loadMain, потому что функция ktDN находится на странице входа, а функция loadMain - на главной странице. Я попытался установить для него имя по умолчанию, но он не работает. – Elaine

+0

Если у вас есть две разные страницы, каждая страница при перезагрузке снова настроит вас на JS, поэтому вам нужно убедиться, что ktDN вызывается на каждой странице до того, как loadMain – Badr