吉比森,
作为 javascript 的新手,我将把它作为一个教程而不是确切的答案来表述。
首先要做的事情是要实现这一目标需要采取哪些步骤?
- 获取输入的值
- 检测“输入”键按下
- 插入新行
- 将行设置为输入的值
好的,现在我们已经将每个问题分解为许多小任务。这使得在问题的每个小节上寻找答案变得更加容易?
Next- 你知道 javascript 框架吗?
在编写 javascript 时,许多浏览器以不同方式处理标准的某些部分,或者根本不支持某些部分。因此,完全手工编写 javascript 不仅麻烦,而且很难跨浏览器编写。框架使开发变得更容易和更简洁,因为它们被构建为在所有浏览器中处理相同的功能。
http://jquery.com - 是我最喜欢的并且非常易于使用,所以我将给你一些使用它的例子。
好的,进入编码。
首先,我们需要将框架链接到 html 页面。如果它是一个小站点或者你在玩,我喜欢让谷歌为我托管 jQuery。通常你可能只是下载它。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
要实际添加代码并使用 jQuery,我们需要添加一些脚本标签并等待 DOM(文档对象模型)在页面上准备好。
<script type="text/javascript">
$(document).ready(function() {
// do stuff when DOM is ready
});
</script>
现在我们需要选择我们试图从中获取数据的元素。jQuery 选择器非常适合这一点。一个简单的例子是通过它的“id”属性抓取一个元素。
在输入的情况下,我们将使用“名称”。在选择器中引用 ID 时,我们总是在其前面加上 #。
$('#name').val()
这将为我们提供输入的值。现在添加另一行。
您的表没有 ID,但让我们给它一个。
<table id='numbers'>
为该行添加 html
$('#numbers').append('<tr><td></td><td></td></tr>');
选择我们刚刚添加的行的第一列并添加数字。
var rows = $('#numbers tr').length;
$('#numbers tr:last td:first').html(rows);
将输入的值复制到第二列
$('#numbers tr:last td:last').html($('#name').val());
删除空输入
$('#name').val('');
现在为了检测击键,我们将在输入中附加一个侦听器并将所有这些代码放入其中。
$('#name').on('keyup', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
$('#numbers').append('<tr><td></td><td></td></tr>');
var rowcount = $('#numbers tr').length;
$('#numbers tr:last td:first').html(rowcount);
$('#numbers tr:last td:last').html($('#name').val());
$('#name').val('').focus();
}
});
这看起来不错,除了 $('name') 进行额外的选择会减慢您的代码及其附加到该对象的函数内部的冗余。我们可以在监听器中使用 $(this) 而不是 $('#name') 来引用初始选择
$('#name').on('keyup', function(e) {
所以我们有 -
<script type="text/javascript">
$(document).ready(function() {
$('#name').on('keyup', function(e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
$('#numbers').append('<tr><td></td><td></td></tr>');
var rowcount = $('#numbers tr').length;
$('#numbers tr:last td:first').html(rowcount);
$('#numbers tr:last td:last').html($(this).val());
$(this).val('').focus();
}
});
});
</script>