2013-07-12 4 views
0

Ошибки «реального» не отображаются в консоли или в JsLint. Я лично предпочитаю использовать onclick в HTML, но я переключился на $("#buttonID1").click() как часть отладки. Я понятия не имею, что не так с кодом. Живая версия здесь DEMOJavascript-код без ошибок, но не работает

Вход: Amazon_Laser_BobtheBodyBuilder_07-11-13.xls

Ожидаемый результат: | - \ п | Amazon \ п | Лазер \ п | BobtheBodyBuilder \ п | 7 июля 2013 г. \ n

Фактический результат: Ничего!

JS

function emptyText() { 
    $('#textinput').val(''); 
    $('#textoutput').val(''); 
} 

$("#buttonID1").click(function(){ 
    var input = document.getElementById('textinput').value; 
    var lines = input.split('\n'); 
    var output = ''; 
    $.each(lines, function(key, line) { 
     var results = line.split(/[_\.]/); 
      if(results!==null && results.length!== 0) 
      { 
       var a = '|-\n| '+results[0]+'\n'; 
       var b = '| '+results[1]+'\n'; 
       var c = '| '+results[2]+'\n'; 
       var d = results[3]; 
       var e = '| '+results[4]+'\n'; 

       var date = d.split(/[\-]/); 
       var mm = date[0]; 
       var dd = date[1]; 
       var yy = date[2]; 
       var month = ''; 
       switch(mm){ 
        case "01": 
         month='Jan'; 
         break; 
        case "02": 
         month='Feb'; 
         break; 
        case "03": 
         month='Mar'; 


      break; 
       case "04": 
        month='Apr'; 
        break; 
       case "05": 
        month='May'; 
        break; 
       case "06": 
        month='June'; 
        break; 
       case "07": 
        month='Jul'; 
        break; 
       case "08": 
        month='Aug'; 
        break; 
       case "09": 
        month='Sep'; 
        break; 
       case "10": 
        month='Oct'; 
        break; 
       case "11": 
        month='Nov'; 
        break; 
       case "12": 
        month='Dec'; 
        break; 
       default: 
        break; 
      } 

      switch(yy){ 
       case "10": 
        yy='2010'; 
        break; 
       case "11": 
        yy='2011'; 
        break; 
       case "12": 
        yy='2012'; 
        break; 
       case "13": 
        yy='2013'; 
        break; 
       default: 
        break; 
      } 

      var date2 = '| '+month+' '+dd+', '+yy+'\n'; 
      output += a+b+c+date2+e; 
     } 
}); 
}); 

HTML

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>title</title> 
    <link rel=href="https://dl.dropboxusercontent.com/u/101322542/Public%20Codes/mister%20table/Part%202%20-%20tokenizer/tokenizer.css" /> 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script> 
    <script src="https://dl.dropboxusercontent.com/u/101322542/Public%20Codes/mister%20table/Part%202%20-%20tokenizer/tokenizer.js" type="text/javascript"></script> 
</head> 
<body> 
    <p class="left">Put your variables here:</p> 
    <textarea rows="4" cols="40" id="textinput"> 
</textarea> 
    <br> 
    <button type="button" id="buttonID1">AutoType</button> 
    <button type="button" id="buttonID2" onclick="emptyText()">Clear</button> 
    <p class="right">Output:</p> 
    <textarea rows="4" cols="40" id="textoutput"> 
</textarea> 
</body> 
</html> 

CSS

#textinput{ 
    background-color:#285c00; 
    color:white; 
} 

#textoutput{ 
    background-color:#285c00; 
    color:white; 
} 
+3

ли вы его отладить? Inject console.log в местах, где вы знаете, какой результат должен сузить ошибку? – Femaref

+0

Если это сработало, когда вы использовали onclick в HTML, я чувствую, что вы, возможно, не завернули свой Javascript в готовом слушателе документа. – mash

+0

Вы когда-нибудь думали об использовании массива того или иного типа? –

ответ

3

Вы забыли использовать строку вы строите. Добавьте это в конце вашей функции:

$('#textoutput').val(output); 

Demonstration


Это не главная проблема, но вы можете сделать ваш код немного проще в нескольких местах.

Например, этот блок

switch(yy){ 
    case "10": 
     yy='2010'; 
     break; 
    case "11": 
     yy='2011'; 
     break; 
    case "12": 
     yy='2012'; 
     break; 
    case "13": 
     yy='2013'; 
     break; 
    default: 
     break; 
} 

может быть заменен

yy = parseInt(yy, 10); 
if (yy<100) yy+=2000; 

(это делает число, которое соответствует обрабатывать числа, вы можете сделать это строка снова с помощью ''+yy после если хочешь).

+0

про yy, некоторые из yy - 12, а некоторые - 2012 (входы смешаны), поэтому я использовал футляр для переключения – hexicle

+2

use 'month = [" " , "Jan", "Feb", "Mar", "Apr" /*,...*/] [parseInt (mm, 10)]; 'вместо монстра. – Christoph

2

Вы должны изменить последнюю строку;

output += a+b+c+date2+e; 
$('#textoutput').val(output); 
1

Необходимо на самом деле добавить текст с помощью кнопки. Так, в принципе, вы забыли эту строку:

document.getElementById('textoutput').value = output; 

после этой строки:

output += a+b+c+date2+e; 

в JavaScript файл

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