2013-09-29 3 views
0

У меня есть очень сложный javascript, используемый для создания множества полей ввода и выпадающих ящиков на основе количества, которое пользователь помещает в текстовое поле.
Базовое описание: оно подсчитывает, если вы используете число или нет, затем вычисляет, если число меньше пяти, а затем вычисляет, какое именно оно. Затем я копирую и вставляю текстовое поле и операции в зависимости от того, что это за номер. Очевидно, что я посасывать Javascript
Вот код (и правильной грамматики.):Мне нужна помощь, упрощающая некоторые Javascript

function calculator() { 
var boxNumber= document.getElementById('boxNumber').value; 
var boxInt= parseInt(boxNumber); 
var limit= new Number(5); 

if (Math.floor(boxInt)== boxInt) { 

    if (boxInt <= limit) { 

     x= boxInt; 

     if (x==5){ 

      document.getElementById('opSpace').innerHTML="<br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select>" 

     } 

     else { 

      if (x==4) { 

       document.getElementById('opSpace').innerHTML="<br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select>" 

      } 

      else { 

       if (x==3) { 

       document.getElementById('opSpace').innerHTML="<br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select>" 

      } 

       else { 

        if (x==2) { 

         document.getElementById('opSpace').innerHTML="<br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select><br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select>" 

        } 

        else { 

        if (x==1) { 

         document.getElementById('opSpace').innerHTML="<br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select>" 

        } 

        else { 

         alert("No zeros or negatives please") 

        } 

        } 

       } 

      } 

     } 

    } 

    else { 
    alert ("Use a number less than 5") 
    } 
} 

else { 
    alert("Use a number") 
} 
} 

Вы получаете идею. Это предшественник калькулятора, в котором текстовые поля будут определять операционные номера, а раскрывающийся список будет определять операции. Любая помощь приветствуется.

+0

Можете ли вы объяснить, что вы имеете в виду, сжимая JavaScript? – user1600124

+0

делает его менее просторным –

+0

Вы просто хотите упростить его и избавиться от всего повторения? – Barmar

ответ

0
function calculator() { 
    var boxNumber = document.getElementById('boxNumber').value; 
    var boxInt = Math.floor(parseInt(boxNumber, 10)); 
    var limit = 5; 
    var htmlString = '<br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select>'; 

    function repeatString(str, num) { 
     return new Array(num + 1).join(str); 
    } 

    if (!isNaN(boxInt) && boxInt <= limit && boxInt > 0) { 
     document.getElementById('opSpace').innerHTML = repeatString(htmlString, boxInt); 
    } else if (boxInt < 0) { 
     alert('Use a number between 0-' + limit); 
    } 
} 
0

Что-то вроде

if(x>limit) 
{ 
    ... show error... 
} 
else if(x<= 0) 
{ 
    ... show error... 
} 
else 
{ 
    var el = document.getElementById('opSpace'); 
    el.innerHTML = ''; 
    for(var i = 0; i<x; i++) 
    { 
     el.innerHTML += "<br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select>"; 
    } 
} 
+0

Это работает! Бесконечно благодарен! –

1
function calculator() { 
    var boxNumber= document.getElementById('boxNumber').value; 
    var boxInt= parseInt(boxNumber, 10); 
    var limit= 5; 

    if (Math.floor(boxInt)== boxInt) { 
     if (boxInt <= limit && boxInt > 0) { 
      var html = ''; 
      for (var i = 0; i < boxInt; i++) { 
       html += "<br /><input /><p></p><select><option>Add</option><option>Sub</option><option>Mul</option><option>Div</option></select>"; 
      } 
      document.getElementById('opSpace').innerHTML = html; 
     } else { 
      alert("No zeros or negatives please") 
     } 
    } else { 
     alert ("Use a number less than 5") 
    } 
} 
+0

Это также работает. Спасибо за помощь, ребята! –

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