2013-04-11 3 views
0

HTMLJavaScript HTML таблицы разбора

<table id="table"> 
<tr> 
<td>1999.09-2007.06</td> 
<td> Secondary School </td> 
</tr> 
<tr> 
<td>2007.09-2011.06</td> 
<td> College </td> 
</tr> 
<tr> 
<td>2011.09-2015.06</td> 
<td> University</td> 
</tr> 
</table> 


<form autocomplete="on"> 
<p/> 
<label>Year</label> 
<input type="text" id="year" name="year" autofocus/> 
<p/> 
<label>Month</label> 
<input type="text" name="month" id="month" /> 
<p/> 
</form> 
<input type="button" onClick="method()" /> 

JavaScript

function method(){ 
var year = document.getElementById("year").value; 
var month = document.getElementById("month").value; 
var data = new Date(year,month-1,1); 
var dataTable = document.getElementById("table"); 
var cells = dataTable.querySelectorAll("td"); 
var cells2 = dataTable.querySelectorAll("td+td"); 

for (var i = 0; i < cells.length; i++){ 
    var mikro = cells[i].firstChild.data.split("-"); 
    var place = cells2[i].firstChild.data; 
    var firstData = mikro[0].split("."); 
    var secondData = mikro[1].split("."); 
    var data1 = new Date(firstData[0],firstData[1]-1,1); 
    var data2 = new Date(secondData[0],secondData[1]-1,1); 
    if(data1<=data && data2>=data){  
     alert(place); 
     } 
    } 
} 

Здесь у меня есть 2 колонки в таблице, я хочу, чтобы создать скрипт, который поможет мне найти информацию от него: у меня есть <input type="text" id="year" name="year" autofocus/> и <input type="text" name="month" id="month" />, где я могу ввести год & месяц. После ввода года & месяца я должен получить информацию из 2-й колонки в соответствии с датами в 1-й колонке, например: «Год ввода: 2002, месяц ввода: 05 - resul t должна быть «Средняя школа», потому что она была между 1999.09-2007.06. Я не вижу, что не так с моим скриптом, он всегда дает мне ложную информацию.

ответ

2

Попробуйте это (jsfiddle), увеличивает индекс ячейки на 2 каждый раз, и использовать более простой td селектор:

function method() { 
    var year = document.getElementById("year").value; 
    var month = document.getElementById("month").value; 
    var data = new Date(year, month - 1, 1); 
    var dataTable = document.getElementById("table"); 
    var cells = dataTable.querySelectorAll("td"); 

    for (var i = 0; i < cells.length; i+=2) { 
     var mikro = cells[i].firstChild.data.split("-"); 
     var place = cells[i+1].firstChild.data; 
     console.log(mikro, place); 
     var yearMonth1 = mikro[0].split("."); 
     var yearMonth2 = mikro[1].split("."); 
     var data1 = new Date(yearMonth1[0], yearMonth1[1] - 1, 1); 
     var data2 = new Date(yearMonth2[0], yearMonth2[1] - 1, 1); 
     if (data1 <= data && data2 >= data) { 
      alert(place); 
     } 
    } 
} 
+0

спасибо очень, очень, очень много Paul копоти! он отлично работает! :)))) –

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