2012-05-22 3 views
-1

Я хочу сделать кнопку, чтобы начать OnClick, чтобы сделать случайные числа продолжают работать (используйтеUncaught ReferenceError: spanArray не определен

  1. или 2. позвонить), но если нажать ее, ошибку сообщение показывает, что «неперехваченным

ReferenceError: spanArray не определен», но выше числа все еще работает, я не могу

понять, где это неправильное место.

PS Но если я использую 3, он работает нормально.

Thx!

ТНХ полный код Стараюсь по 3 является http://jsfiddle.net/eVyjC/

function computeRandom(){ 
// skip code: have used loop to create six spans already 
var spanArray = document.getElementsByTagName("span"); 
//1.document.write("<input type = button value = 'start' onclick = \"passKeepMove(value,spanArray) \" name = button1>"); 
//2.document.write("<input type = button value = 'start' onclick = \"setInterval(function(){keepMove(value,spanArray);}, 10) \" name = button1>"); 
//3.setInterval(function(){keepMove(value,spanArray);}, 10) ; 
    } 


function keepMove(val,sp){//call by pointer 

    var index = parseInt(Math.random()*43);//set a increment to avoid repeatition 

    for(i = 0; i < sp.length; i++){ 
    sp[i].innerHTML = val[i+index]; 
    } 
} 


function passKeepMove(v,s){ 
    setInterval(function(){keepMove(v, s);}, 10); 
} 

ответ

2

var перед var spanArray делает spanArray локальной переменной. Таким образом, вы не можете получить к нему доступ за пределами области функций computeRandom.

Вам необходимо сделать его глобальным или создать лучший дизайн, чтобы вам не нужны глобальные переменные.

+0

Но почему я использую setInterval (function() {keepMove (значение, spanArray);}, 10) в computeRandom он отлично работает? –

+0

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

+0

Я просто новобранец, поэтому выше всего лишь мое мнение. Если это неправильно, сообщите мне. THX. –