2013-11-11 4 views
-2

Я хочу обратить звезды от (маленьких до самой большой) до (Biggest к наименьшему)Как перевернуть цикл for?

function seethestars1() { 
     for (var i = 0; i <= 10; i++) { 
      for (var j = 0; j < i; j++) { 
       document.getElementById("emptytext2").value += "*"; 
      } 
      document.getElementById("emptytext2").value += "\n"; 
     } 
    } 

<textarea id="emptytext2" name="S2"> 

<input id="emptytext3" type="button" value="Click for the stars" onclick ="seethestars1()" /> 
+6

'вар я = 10; i> = 0; i -) ' – ediblecode

+3

' {) ++ i; 01 = elclanrs

+2

Выполняйте свои задания самостоятельно. :) Станьте помощником! – Tauseef

ответ

2

Вы можете использовать его как этот

for (var i = 10; i >= 0; i--) 

Но я не знаю, почему вы делаете поэтому, потому что вы не используете эту переменную в своем цикле, поэтому я думаю, что это не имеет никакого значения для выхода, поскольку цикл будет работать 10 раз в любом случае.

Если бы я мог догадаться, я думаю, вы хотите напечатать звезды в обратном порядке количества. Это означает, что вы хотите иметь максимальные звезды в первой строке, то -1 во второй и так далее .. Если это так, то вам необходимо изменить порядок внутреннего контура только как этот

function seethestars1() { 
    var stars = document.getElementById("emptytext2"); 
    for (var i = 0; i <= 10; i++) { 
     for (var j = 10; j > i; j--) { 
      stars.value += "*"; 
     }        
     stars.value += "\n"; 
    } 
} 

Js Fiddle Demo

+0

Не вызывайте getElementById в каждом цикле. Это довольно дорого. [Получить элемент один раз и использовать его для всех манипуляций] (http://jsfiddle.net/some/558Kh/). – some

+0

Хороший пункт @ some согласился и обновил сообщение. Спасибо :) – Sachin

+0

Вы можете изменить внешний или внутренний цикл. Мое мнение состоит в том, что яснее изменить внешний цикл '(i = 10; i> 0; -i)' и сохранить внутренний цикл как '(j = 0; j some

0

Просто попробуйте следующий код для метода seethestarts1.

function seethestars1() { 
     for (var i = 0; i <= 10; i++) { 
      for (var j = i; j > 0; j--) { 
       document.getElementById("emptytext2").value += "*"; 
      } 
      document.getElementById("emptytext2").value += "\n"; 
     } 
    } 
0
function seethestars2() { 
     for (var i = 10; i > 0; i--) { 
      for (var j = 0; j < i; j++) { 
       document.getElementById("emptytext2").value += "*"; 
      } 
      document.getElementById("emptytext2").value += "\n"; 
     } 
    } 

, что происходит здесь проста; вместо того, чтобы начинать с 1 звезды, он начинается с 10 звезд в outer loop с счетчиком i. inner loop такой же, как и раньше.

+0

на мой взгляд, самый ясный способ сделать это. Если вы измените его так, чтобы вы не вызывали getElementById в каждом цикле (это довольно дорогой вызов), я дам вам преимущество. http://jsfiddle.net/some/558Kh/ – some

0

Положите один для цикла в обратном порядке. Попробуйте следующее:

function seethestars1() { 
     for (var i = 0; i <= 10; i++) { 
      for (var j = 10; j > i; j--) { 
       document.getElementById("emptytext2").value += "*"; 
      } 
      document.getElementById("emptytext2").value += "\n"; 
     } 
} 

Вот демо: http://jsfiddle.net/s5ztu/

+1

Не вызывайте getElementById в каждом цикле. Это довольно дорого. Получите элемент один раз и используйте его для всех манипуляций. И когда вы играете, поставьте javascript в разделе javascript: http://jsfiddle.net/some/558Kh/ – some

+0

@ some: согласился .. –

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