2016-08-18 2 views
-1

Вот цикл for. Я пытаюсь упростить его (как в случае понижения и вытащить петлю для удобства использования). Не знаете как - может кто-нибудь объяснить?Как я могу упростить цикл

if (myBox.length >= i) { 
    var smile = ''; 
    for (var x = 0; x < myBox[i].myRating; x++) { 
     smile = smile + '<span>☺</span>'; 
    } 
    $('#table').append('<tr><td>' + myBox[i].Title + smile + '</td><tr>'); 
} 
+3

Вы можете уточнить ваш вопрос ??? И похоже, вы пытаетесь установить 'tr' как прямой дочерний элемент' div'. Конечно, это недопустимая разметка HTML. EDIT: НЕТ ждать, ваш визуализированный HTML не имеет никакого смысла. Вы закрываете div перед закрытием других открывающих тегов –

+0

@vzupo, обратите внимание на код, который вы написали. Я отредактировал неправильный HTML, селектор '# div', кажется, является таблицей, и вы закрываете' ', который никогда не был открыт, и' 'никогда не был закрыт .... – jherax

ответ

0

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

if (myBox.length >= i) { 
var smile = ''; 
for (var x = myBox[i].myRating; x > 0; x--){ 
    smile = smile + '<span>☺</span>'; 
} 

вот еще один пример для понижения

for(var x=5; x>0; x--){ 
    console.log(x + ','); //it'll print 5,4,3,2,1, in your console log 
    //if you want to print 0 also, just use "x>=0" in the for loop 
} 

И пожалуйста, напишите полный код всегда

+0

так говорят только myBox.length идет до 5, а myRating - до 5, как я могу полностью избавиться от циклов for – vzupo

+0

@vzupo Пожалуйста, будьте более конкретными. Что ты хочешь делать? –

+0

Я хочу, чтобы myRating представлял количество улыбок, отображающих – vzupo

0

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

function repeatStr(str, num) 
{ 
    var returnStr = ''; 
    for(var i = 0; i < num; i++) 
    { 
     returnStr += str; 
    } 

    return returnStr; 
} 

, а затем в своем коде:

if (myBox.length >= i) { 
    $('#table').append('<tr><td>' + myBox[i].Title + repeatStr('<span>☺</span>', myBox[i].myRating) + '</td></tr>'); 
} 
Смежные вопросы