07.js
来自「进行ajax开发sdsd s d sd s」· JavaScript 代码 · 共 89 行
JS
89 行
/** * Extract data from the specified XML document and format it as an HTML table. * Append the table to the specified HTML element. (If element is a string, * it is taken as an element ID, and the named element is looked up.) * * The schema argument is a JavaScript object that specifies what data is to * be extracted and how it is to be displayed. The schema object must have a * property named "rowtag" that specifies the tag name of the XML elements that * contain the data for one row of the table. The schema object must also have * a property named "columns" that refers to an array. The elements of this * array specify the order and content of the columns of the table. Each * array element may be a string or a JavaScript object. If an element is a * string, that string is used as the tag name of the XML element that contains * table data for the column, and also as the column header for the column. * If an element of the columns[] array is an object, it must have one property * named "tagname" and one named "label". The tagname property is used to * extract data from the XML document and the label property is used as the * column header text. If the tagname begins with an @ character, it is * an attribute of the row element rather than a child of the row. */function makeTable(xmldoc, schema, element) { // Create the <table> element var table = document.createElement("table"); // Create the header row of <th> elements in a <tr> in a <thead> var thead = document.createElement("thead"); var header = document.createElement("tr"); for(var i = 0; i < schema.columns.length; i++) { var c = schema.columns[i]; var label = (typeof c == "string")?c:c.label; var cell = document.createElement("th"); cell.appendChild(document.createTextNode(label)); header.appendChild(cell); } // Put the header into the table thead.appendChild(header); table.appendChild(thead); // The remaining rows of the table go in a <tbody> var tbody = document.createElement("tbody"); table.appendChild(tbody); // Now get the elements that contain our data from the xml document var xmlrows = xmldoc.getElementsByTagName(schema.rowtag); // Loop through these elements. Each one contains a row of the table for(var r=0; r < xmlrows.length; r++) { // This is the XML element that holds the data for the row var xmlrow = xmlrows[r]; // Create an HTML element to display the data in the row var row = document.createElement("tr"); // Loop through the columns specified by the schema object for(var c = 0; c < schema.columns.length; c++) { var sc = schema.columns[c]; var tagname = (typeof sc == "string")?sc:sc.tagname; var celltext; if (tagname.charAt(0) == '@') { // If the tagname begins with '@', it is an attribute name celltext = xmlrow.getAttribute(tagname.substring(1)); } else { // Find the XML element that holds the data for this column var xmlcell = xmlrow.getElementsByTagName(tagname)[0]; // Assume that element has a text node as its first child var celltext = xmlcell.firstChild.data; } // Create the HTML element for this cell var cell = document.createElement("td"); // Put the text data into the HTML cell cell.appendChild(document.createTextNode(celltext)); // Add the cell to the row row.appendChild(cell); } // And add the row to the tbody of the table tbody.appendChild(row); } // Set an HTML attribute on the table element by setting a property. // Note that in XML we must use setAttribute() instead. table.frame = "border"; // Now that we've created the HTML table, add it to the specified element. // If that element is a string, assume it is an element ID. if (typeof element == "string") element = document.getElementById(element); element.appendChild(table);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?