我有一个html页面,您可以将文本放入文本区域,单击按钮然后创建一个html表格。 问题是,我使用JS文件使我的表可排序,但是这个JS文件不适用于在页面本身创建后创建的表。 单击按钮并创建表后,如何再次调用JS文件?或者有没有其他方法将JS文件应用于新表?
我的问题似乎是这个问题: Apply jquery propieties on new element created after the page is loaded 但是我不能使用JQuery,没有它有什么办法吗?
创建表的示例:
<div id="artikelnr2">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="table.css">
<script src="java.js"></script>
<div class="datagrid"><table class="sortable">
<thead><tr><th>Nummer</th><th>Nummer</th><th>Bezeichnung</th><th>Bemerkungen</th></tr></thead>
<tbody>
<tr><td>897-251</td><td>00.702.07803.7</td><td>5G2</td><td>-</td></tr><tr><td>897-1051</td><td>00.702.0306.7</td><td>5G1</td><td>-</td></tr><tr><td>897-1651</td><td>00.702.0307.3</td><td>5G1U</td><td>-</td></tr><tr><td>897-341</td><td>00.702.0323.9</td><td>5G2.5</td><td>-</td></tr>
</tbody>
</table></div>
</div>
我正在使用此页面中的sorttable.js: http://www.kryogenix.org/code/browser/sorttable/
点击按钮后调用的JavaScript(将另一个页面的内容粘贴到现有的div容器中):
function getOutput(url) {
var file = selectedValue()+".csv";
var value = document.getElementById("artikelnr").value;
<!---Leerzeichen entfernen-->
value = myTrim(value);
var url = url || "verarbeitung.php?eingabe="+value+"&eingabe2="+file ;
getRequest(
url, // URL for the PHP file
drawOutput, // handle successful request
drawError // handle error
);
return false;
}
// handles drawing an error message
function drawError() {
var container = document.getElementById('artikelnr2');
container.innerHTML = 'Bummer: there was an error!';
}
// handles the response, adds the html
function drawOutput(responseText) {
var container = document.getElementById('artikelnr2');
container.innerHTML = responseText;
tempResult = responseText;
}
// helper function for cross-browser request object
function getRequest(url, success, error) {
var req = false;
try{
// most browsers
req = new XMLHttpRequest();
} catch (e){
// IE
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
// try an older version
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return false;
}
}
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function(){
if(req.readyState == 4) {
return req.status === 200 ?
success(req.responseText) : error(req.status);
}
}
req.open("GET", url, true);
req.send(null);
return req;
}
答案 0 :(得分:2)
所以这是一个建议,因为代码的主要部分不可用。
在您创建新表的现有代码中,您需要添加/运行以下内容:
sorttable.makeSortable(newTableObject);
您可以直接从现有代码中获取newTableObject
引用,也可以在将新表添加到DOM后调用document.getElementById(idOfTheTableIJustAdded)
。
Src:http://www.kryogenix.org/code/browser/sorttable/
问题编辑后更新:
在这个脚本函数中你应该可以这样做
function drawOutput(responseText) {
var container = document.getElementById('artikelnr2');
container.innerHTML = responseText;
//tempResult = responseText;
var newTableObject = container.querySelector(".sortable");
sorttable.makeSortable(newTableObject);
}