2015-08-14 2 views
0

Поскольку мы не можем установить максимальную высоту таблицы таблицы, я использую этот цикл для ограничения высоты строки (равной ячейке), увеличивая ширину таблицы до тех пор, пока все строки не высоту < высота, которую я установил в цикле.Отправлять пока цикл до следующей строки Если нет изменения

var i = 0, 
    row, table = document.getElementsByTagName('table')[0], 
    j = table.offsetWidth; 
while (row = table.rows[i++]) { 
    while (row.offsetHeight > 200 && j < 3000) { 
     j += 250; 
     table.style.width = j + 'px'; 
    } 
} 

Но есть проблема в этом сценарии, если по какой-либо причине конкретная высота строки не может быть меньше, чем 400px, которая больше максимальной высоты я установил для строк в скрипте, таблица становится ненужным 3000 пикселей в ширину из-за условия в цикле.

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

Примера (не проблемы, когда нет <br/> тега): http://jsfiddle.net/jm5cpqr4/5/

Примера (проблема, когда не ограничивающего <br/> использования минимально возможной высоты ячейка): http://jsfiddle.net/jm5cpqr4/6/

+0

Я вас совсем не понимаю, но, возможно, вы это ищете? http://www.w3schools.com/js/js_break.asp – Script47

+0

нормально, но есть ли что-то непонятное, что я написал? – BlackFire

+0

http://jsfiddle.net/jm5cpqr4/2/? вы можете отредактировать его, чтобы воссоздать проблему –

ответ

0

script47 правильно указано, что в разрешении используется оператор break.

Читатели, возможно, потребуется уменьшить значение смещения испытанный в «неисправного» случае на jsfiddle воспроизвести проблему в браузере - это did't сразу неудачу для меня

А пример решения:

function loaded() 
{ var i = 0, row, table = document.getElementsByTagName('table')[0], 
    j = table.offsetWidth; 
    var testHeight = 100; 

    while (row = table.rows[i++]) 
    { var h0 = row.offsetHeight; 
      while (row.offsetHeight > testHeight && j < 3000) 
     { j += testHeight; 
      table.style.width = j + 'px'; 
      if(row.offsetHeight==h0) 
      { table.style.width = j-testHeight + 'px' 
       break; 
      } 
     } 
    } 
} 
loaded(); 
+0

Спасибо за ответ, но ваш код не работает над 2-й строкой: http://jsfiddle.net/5cubnojq/ и высота 2-го ряда выше 200 пикселей, так как нет ширины таблицы. – BlackFire

+0

Моя ошибка: я не копировал и не вставлял окончательный результат. Я обновил приведенный выше пример, сделал «testHieight» переменной и протестировал его на этой последней скрипке с тестовой высотой 100. Надеюсь, это поможет. – traktor53

+0

Спасибо за ответ, ваш код работает, но когда я попытался понизить приращение, чтобы получить точные результаты, он не работает, потому что строки могут не изменять высоту в каждом приращении малой ширины, если мы установим. Поэтому я пытался исправить это с помощью if и else, и я думаю, что он работает, но вы можете проверить его в прошлый раз и сказать мне, могу ли я использовать его, потому что я думаю, что это плохо для производительности ... спасибо – BlackFire

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