以html行为增量动态添加字母

时间:2015-09-19 11:15:57

标签: javascript jquery

如何确保我在左侧的新单元格中动态增加字母数字,在基于Select中选择的选项动态创建的行中的每个单元格旁边。这个新生成的字母表将被视为该特定行的文本框的项目符号/序列号。

jsfiddle

js代码

$(document).ready(function(){

    var select = $("#Number_of_position"), table = $("#Positions_names"); 
 for (var i = 1; i <= 100; i++){
        select.append('<option value="'+i+'">'+i+'</option>');
    }

    select.change(function () {
        var rows = '';
        for (var i = 0; i < $(this).val(); i++) {
            rows += "<tr><td><input type='text'></td></tr>";
        }
        table.html(rows);
    });

});  

html

<select id="Number_of_position">              
    </select>   <table id="Positions_names">
    </table>

2 个答案:

答案 0 :(得分:2)

这基本上是一个基本问题,你可以很容易地在javascript中搜索这个实现 - How to create a function that converts a Number to a Bijective Hexavigesimal?

alpha = "abcdefghijklmnopqrstuvwxyz";

function hex(a) {
  // First figure out how many digits there are.
  a += 1; // This line is funky
  var c = 0;
  var x = 1;      
  while (a >= x) {
    c++;
    a -= x;
    x *= 26;
  }

  // Now you can do normal base conversion.
  var s = "";
  for (var i = 0; i < c; i++) {
    s = alpha.charAt(a % 26) + s;
    a = Math.floor(a/26);
  }

  return s;
}

所以你可以做到

$(document).ready(function(){

var select = $("#Number_of_position"), table = $("#Positions_names"); 
 for (var i = 1; i <= 100; i++){
        select.append('<option value="'+i+'">'+i+'</option>');
    }

    select.change(function () {
        var rows = '';
        for (var i = 0; i < $(this).val(); i++) {
            rows += "<tr><td>" + hex(i) + "</td><td><input type='text'></td></tr>";
        }
        table.html(rows);
    });

}); 

下面是示例http://jsfiddle.net/v2ksyy7L/6/

如果你想让它成为大写,那就

hex(i).toUpperCase();

此外 - 这将适用于javascript可以处理的任意数量的行

答案 1 :(得分:1)

如果我理解正确的话,那也许就是你想要的:

http://jsfiddle.net/v2ksyy7L/3/


我为字母添加了一个数组:

var alphabet = "abcdefghijklmnopqrstuvwxyz".split("");


然后将输出添加到“渲染”循环中:

 rows += "<tr><td>" + alphabet[i] + " <input type='text'></td></tr>";