2013-05-24 2 views
-1
var t = 0; 
function addDiv() 
{ 
    var div = document.createElement("div"); 
    t++; 
    div.setAttribute("id", "box" + t); 
    document.body.appendChild(div); 
    AddStyle(); 
} 

var h = 0; 
var p = 1;  
function doMove() 
{ 
    var okj = document.getElementById("box" + p); 

    if (p <= t) { 
     p++; 
    } 
    var g = setInterval(function() { 
     var go = parseInt(okj.style.left, 0) + 1 + "px"; 
     okj.style.left = go; 
    }, 1000/60); 
} 

Мой вопрос заключается в том, что после приращения р, что р ++ будет мой var p = 1 увеличиваться каждый раз, когда я называю doMove? Пожалуйста, помогите мне в этом вопросе.могут быть глобальные переменные увеличиваются в JavaScript

+0

Не можете ли вы просто сделать предупреждение (p), чтобы узнать, действительно ли он увеличивается или нет? - Я предполагаю, что это не будет, так как т не является глобальным, так р никогда не <= т – Borgtex

+0

Пожалуйста, смотрите этот очень тонкий вопрос и ответ: [JavaScript переменная Scope] [1] [1]: HTTP : //stackoverflow.com/questions/500431/javascript-variable-scope –

+0

Помог ли мой ответ ниже? –

ответ

2

По определению глобальные переменные имеют глобальный охват, поэтому вы можете увеличивать их или повторно назначать в рамках функции, и это будет работать, насколько это фантастично!

Хотя, как Borgtex указал ваш if заявление не будет работать

if (p <= t) { 
    p++; 
} 

Вы объявили переменную t в другой функции, так что ваша doMove() функция не имеет к нему доступ, поэтому это утверждение всегда будет возвращать false; Если вы сделаете t глобальной переменной или передадите ее в свою doMove() функцию в качестве параметра, тогда это будет работать.

var p = 1; // this variable is global 

function varTest(){ 
    p++ //This will work because p is global so this function has access to it. 
    var t = 0; 
} 

function anotherTest(){ 
    if(p<t){ //This will return false - t is not in scope as it was defined in another function 
     alert("supercalifragilisticexpihalitoscious"); 
    } 
} 
+0

@ Консоль Мой плохой, это было давно, когда я в последний раз видел его, и моя память о фильме немного перекошена. Спасибо за исправление, я никогда не повторю эту ошибку. –

+0

Ха-ха ....... :) Хорошо – iConnor

Смежные вопросы