2016-01-07 36 views
0

我有一个html页面,您可以在其中将文本放入textarea,单击一个按钮然后创建一个html表格。 问题是,我使用的JS文件使我的表可排序,但此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; 
} 
+1

后的代码,这两个排序表,以及如何被调用,并创建您的新表的代码。 – LGSon

+0

['DOMContentLoaded'](https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded)。 – Script47

+0

我的意思是你的代码/脚本,你如何实现它,你的代码如何调用sort方法,它被调用的位置/时间以及它如何将新表插入到DOM中。 – LGSon

回答

2

所以这是一个建议,因为你的代码的主要部分不可用。

在现有的代码,在其中创建新表,你需要添加/运行以下命令:

sorttable.makeSortable(newTableObject); 

newTableObject参考你要么可以从现有的代码或以后打电话document.getElementById(idOfTheTableIJustAdded)开门见山您将新表添加到DOM。

源: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); 
} 
+0

这对我来说非常合适,谢谢! – Fynn