从formular中获取数据并制作一个表、DOM、JavaScript
Taking data from formular and making a table, DOM, JavaScript
我必须从XHTML
中的表单中获取数据并将其放入表中。
这是我的HTML的一部分:
<form method="post">
<fieldset>
<p>
<label for="Title">Title:
<input type="text" name="title" id="Title" />
</label>
</p>
<p>
<label for="Autor">Autor:
<input type="text" name="autor" id="Autor" />
</label>
</p>
<p>Category:</p>
<select name="cat" id="Cat" size="1">
<option>Bestseller</option>
<option>Novel</option>
<option>Music</option>...</select>
<p>
<input type="button" value="Send" onclick="createNode()" />
</p>
</fieldset>
</form>
<table id="output"></table>
我的JavaScript中的函数:
function createNode() {
var title;
var autor;
var category;
title = document.getElementById("Title").innerHTML;
autor = document.getElementById("Autor").innerHTML;
category = ...
var in_table = document.getElementById("output");
var tr = document.createElement("tr");
var td = document.createElement("td");
td.setAttribute("class", "buch_neu");
td.appendChild(title);
td.appendchild(autor);
td.appendChild(category);
tr.appendChild(td);
in_table = tr.parentNode;
var last = in_tabelle.lastChild;
in_table.insertAfter(tr, last);
}
但是,当我按下发送按钮时,什么也没发生。按下F12
后出现错误"Node.appendChild的Argument 1不是对象,但实际上应该是方案,不是吗?
您应该创建和附加分离的元素,函数不应该返回和匿名函数。
最重要的是,您的事件监听器应该在JS:中移动
http://jsfiddle.net/ghorg12110/8hg2uw57/1/
document.getElementById("submitBtn").addEventListener("click", createNode);
function createNode() {
var title = document.getElementById("Title").value;;
var autor = document.getElementById("Autor").value;
var category = document.getElementById("Cat").value;
var in_table = document.getElementById("output");
var tr = insertNode("tr", {}, in_table);
insertNode("td", {"class": "buch_neu", "text": title}, tr);
insertNode("td", {"class": "buch_neu", "text": autor}, tr);
insertNode("td", {"class": "buch_neu", "text": category}, tr);
insertNode("tr", {}, in_table);
}
function insertNode(type, attrs, wrapper) {
var node = document.createElement(type);
wrapper.appendChild(node);
for (var key in attrs) {
if (key === "text") {
node.innerHTML = attrs[key];
} else {
node.setAttribute(key, attrs[key]);
}
}
return node;
}
您得到
未能在"Node"上执行"appendChild":参数1的类型不是"节点"。
因为title
和autor
是纯文本,而不是Node
类型,所以不能执行此
td.appendChild(title);
td.appendchild(autor);
使用innerHTML
而不是appendChild()
。
相关文章:
- 窗口对象属性返回一个dom节点
- 是否可以将一个DOM元素转换为另一个?或者从中复制所有属性
- 使用 Aurelia动态创建一个 dom 对象
- 如何使用 ng 无限滚动并在 http.jsonp 完成后更新另一个 DOM 元素
- 从单独的 html 页面创建一个 dom 元素
- 获取下一个 DOM 元素的 ID
- 我有一个 DOM 节点如何获取其中的文本
- 获取列表中的第一个 DOM 元素
- 在 AngularJS 中成功的 http 请求上创建一个 DOM 元素
- 如何将一个dom元素附加到另一个dom元件中,但在jquery中的第一个位置
- 有没有一种方法可以创建一个DOM对象,给定其呈现的字符串
- 从字符串创建一个 DOM 文档,不带 JQuery
- 一次显示一个DOM元素的淡入/淡出列表
- Angular 指令在从一个 DOM 元素移动到另一个 DOM 元素后停止工作
- 如何获取在视口中可见的第一个DOM元素
- 选择当前元素之后的下一个DOM元素
- 如何交换第一个和最后一个DOM元素
- 渲染速度:一次添加一个DOM项或一次添加项集
- 另一个DOM元素的JavaScript虚拟/代理输入
- 如何检查某个DOM元素是否在另一个DOM元素树中