2011-02-17 3 views
1

Когда я нажимаю «тест» на кадр изменяется, но когда я нажимаю его снова оно не изменить размер обратно к исходному размеруПочему эта функция не работает?

function dropdownResize(){ 

var down = 0; 

     if(down == 0){ 
       parent.document.getElementById('frameMain').rows = '84,84,*'; 
       down = 1; 
      } 
     else{ 
       parent.document.getElementById('frameMain').rows = '84,30,*'; 
       down = 0; 
      } 


    } 

<a onclick="dropdownResize()"> test</a> 

ответ

10

Это не работает, потому что down это определяется в пределах функции dropdownResize(). Когда функция вызывается, down сбрасывается на 0 каждый раз снова.

Что вы должны сделать:(обратите внимание, что это прямой ответ на ваш вопрос, и вы, вероятно, следует узнать больше о variable scope для того, чтобы предотвратить глобальные переменные как можно больше)

var down = 0; 
function dropdownResize(){ 
     if(down == 0){ 
       parent.document.getElementById('frameMain').rows = '84,84,*'; 
       down = 1; 
      } 
     else{ 
       parent.document.getElementById('frameMain').rows = '84,30,*'; 
       down = 0; 
      } 
    } 
+1

Я бы упомянул кое-что о столкновении с прицелом, если бы я не ленился. Но я ... так что это будет достаточно хорошо, ха-ха. –

1

Я думаю, что вниз местный переменная и будет установлена ​​в 0 при каждом вызове функции.

2

попробовать:

var down = 0; 

function dropdownResize(){ 

     if(down == 0){ 
       parent.document.getElementById('frameMain').rows = '84,84,*'; 
       down = 1; 
      } 
     else{ 
       parent.document.getElementById('frameMain').rows = '84,30,*'; 
       down = 0; 
      } 


    } 
+0

Мне любопытно, что означает. Num, num, * '. вы можете поделиться образцом на jsfiddle – Abhijit

+1

@Ab: Это связано с кадрами, посмотрите на 'frameset' на google. Сейчас они обычно считаются плохой практикой, поэтому меня немного беспокоит, что делает этот парень. –

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