javascript - 根据用户输入向表中插入行

标签 javascript jquery

我尝试使用 javascript 生成行,但我正在学习 jquery,我希望使用它来实现此功能。

HTML

<form id="sizePicker">
    Grid Height:
    <input type="number" id="input_height" name="height" min="1" value="1">
    Grid Width:
    <input type="number" id="input_width" name="width" min="1" value="1">
    <input type="submit">
</form>
<table id="pixel_canvas"></table>

JAVASCRIPT/JQUERY

function makeGrid() {
   var table = document.getElementById("pixel_canvas");
   //var table = $('#pixel_canvas');
   table.innerHTML = "";

   while($('#pixel_canvas tr').length > 0)
       table.deleteRow(0);
       var inputHeight = $('#input_height').val();
       var inputWidth = $('#input_width').val();
  for(var i = 0; i < inputHeight; i++){
       var row = table.insertRow(i);
       for(var j = 0; j < inputWidth; j++){
           var cell = row.insertCell(j);
       } 
   }
   return false;
}
sizePicker.submit(function(evt){
    evt.preventDefault();
    makeGrid();
});

这里,如果我使用 jquery 实现相同的方法,则表 DOM 方法(例如 insertRow() 和 insertCell())将处于非事件状态。

var table = $('#pixel_canvas');
  var row = table.insertRow(i); // The browser responses not a function 

最佳答案

insertRow 是 Javascript DOM 函数。因此,使用 JQuery 您必须获取 DOM 元素而不是 jquery 对象。使用 $('#pixel_canvas').get(0) 获取 DOM 元素。

function makeGrid() {
   var table = $('#pixel_canvas').get(0);
   table.innerHTML = "";

   while($('#pixel_canvas tr').length > 0)
       table.deleteRow(0);
       
    var inputHeight = $('#input_height').val();
    var inputWidth = $('#input_width').val();
    
    for(var i = 0; i < inputHeight; i++){
         var row = table.insertRow(i);
         for(var j = 0; j < inputWidth; j++){
             var cell = row.insertCell(j);
         } 
     }
   return false;
}

$('#sizePicker').submit(function(evt){
    evt.preventDefault();
    makeGrid();
});
table, th, td {
   border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="sizePicker">
    Grid Height:
    <input type="number" id="input_height" name="height" min="1" value="1">
    Grid Width:
    <input type="number" id="input_width" name="width" min="1" value="1">
    <input type="submit">
</form>
<table id="pixel_canvas"></table>

关于javascript - 根据用户输入向表中插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47929138/

相关文章:

javascript - JavaScript 中事件处理程序的异步或同步调用

javascript - 使用引导模式在数据表库中插入数据

javascript - 为什么我不能将 AdjecentHTML 插入文本区域?

javascript - 当通过 JavaScript 添加固定位置时,粘性 div 会切换两侧

javascript - HIghcharts & Bootstrap : Chart on Tab 2 is not appearing. 虽然第一个图表工作正常

jquery - 使用 jquery 更改 css 文件不起作用

javascript - 在javascript中使用变量动态引用html元素

javascript - 一旦 div 中的内容发生更改,就重新加载页面中的 javascript

javascript - 将对下拉框的更改保存到 CakePHP 中的数据库中

javascript - 从 json 中删除斜杠 jquery