1

请看下面的代码,表格应该根据下面selected id选项中选择的输入改变行数,但是只读取select id的第一个值,并且行数不会根据选择改变,可以请指出我代码中的错误?

http://jsfiddle.net/uTY6n/14/

HTML:

  <div id="scrollingDiv">
<select id="read">
    <option value="1">1</option>
    <option value="2">2</option></select>

<table id="contentTable" border="1">
    <!-- Fill table programmatically -->
</table>
 </div>

JAVASCRIPT:

  function buildTable()
 {
var myTable =document.getElementById("contentTable");
var j=document.getElementById("read").value;
var rows = [];
var cells = [];

for( var i = 0; i < j; i++ )
{
    rows[i] = myTable.insertRow(i);
    if(i%3==2)rows[i].addClass("everyrow");
    cells[i] = [];

    for( var x = 0; x < 3 ; x++ )
    {
        cells[i][x] =document.createElement((x==0)?"th":"td");
        cells[i][x].innerHTML = (x==0)?"<input>":"<input>";
        rows[rows.length - 1].appendChild(cells[i][x]);
    }
  }

   }
   buildTable();

CSS:

  #scrollingDiv
  {
  border: 1px groove black;
  height: 350px;
  width: 350px;
  background: #ffffff;
  overflow: auto;
  }

  #contentTable
  {
  height: 350px;
  width: 350px;
  }
  .every3rdrow{
  border-bottom:3px solid black;
  }
4

2 回答 2

0

看这个演示。

首先,您需要将事件侦听器附加到<select>

document.getElemenyById('read').addEventListener('change', buildTable);

然后,您需要确保表在每次buildTable()被调用之前被清空:

function buildTable() {
    var myTable =document.getElementById("contentTable");
    var j=document.getElementById("read").value;
    var rows = [];
    var cells = [];

    while (myTable.hasChildNodes()) {
        myTable.removeChild(myTable.lastChild);
    }

    ...
}

希望这可以帮助!

于 2013-09-17T22:07:07.037 回答
0

尝试

function buildTable() {

var myTable =document.getElementById("contentTable");
myTable.innerHTML = "";
var j=document.getElementById("read").value;
var rows = [];
var cells = [];
var myHtml = "";

    for( var i = 0; i < j; i++ ) {
        myHtml += "<tr>";
             for( var x = 0; x < 3 ; x++ ){
                myHtml += "<td></td>"
             }
        myHtml += "</tr>";
    }
myTable.innerHTML = myHtml;
}

这就是一般的想法,也请务必将其称为onChange您的选择。

于 2013-09-17T22:07:17.077 回答