我正在尝试学习JavaScript,但我正在努力学习一个非常简单的例子。
我有一个表单,我想在每次用户点击提交时将其内容添加到“目录”中的新表行。
但是当我使用下面的代码点击提交时,我看到新表格行短暂闪烁然后消失,好像页面正在重置。
当我使用注释掉的代码时(只是将表单内容附加到body.innerHTML),它工作正常。
我做错了什么?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4 /loose.dtd">
<html>
<head>
<title>Javascript test</title>
</head>
<script type="text/javascript">
function addItem() {
var itemName = document.getElementById('item_name').value;
var itemPrice = document.getElementById('item_price').value;
var newRow = document.createElement('tr');
//var body = document.getElementById('body');
//body.innerHTML += itemName;
newRow.innerHTML = "<td>" + itemName + "</td><td>" + itemPrice + "</td>";
var catalog = document.getElementById('catalog');
catalog.appendChild(newRow);
}
</script>
<body id="body">
<form><h2>Add an Item to the Catalog</h2>
<p>Item Name: <input type="text" id="item_name" value="" /> Price: <input type="text" id="item_price" value="" /></p>
<input type="submit" onClick="addItem()" value="Add" id="submit" />
<input type="reset" id="reset" />
</form>
<table id="catalog"></table>
</body>
</html>
答案 0 :(得分:3)
'submit'的输入类型将在执行JavaScript后提交表单。
如果您将输入类型更改为“按钮”,您将看到代码正常工作。
<input type="button" onClick="addItem()" value="Add" id="submit" />
这也称为“PostBack”,它涉及获取表单上输入字段中的数据,并再次将其发布到页面。发布到页面的数据可以从服务器端代码中获取,作为进一步操作的基础。
否则,你的代码没问题。我唯一的建议就是构建td
s的方式与构建tr
的方法相同
答案 1 :(得分:0)
将type="submit"
更改为type="button"