之后,我使用document.getElementById("treeviewer").innerHTML = this.responseText;
注入从PHP获得的结果以向用户显示信息。
我注意到一个javascript功能不起作用表现出jstree代码注入后,而且jstree函数运行前执行的innerHTML
的问题是,如何解决这个问题?也许我没有正确调用JavaScript,调用函数的正确方法是什么?我已经测试了使用javascript函数创建一个脚本元素(警告函数工作正常),我也使用eval()作为一些答案建议与任何好的结果。
jstree_charge.js jstree_charge.php 的
function jstree_charge(tech) {
var index_project_database= document.getElementById("project_select").selectedIndex;
var project_database= document.getElementById("project_select").options[index_project_database].value;
if (tech == "") {
document.getElementById("treeviewer").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("treeviewer").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","../php/jstree_charge.php?tech=" + tech + "&project=" + project_database, true);
xmlhttp.send();
} }
结果这是受innnerHTML在jstree_charge.js
<div name="treeviewer" id="treeviewer">
<ul>
<li>RNC5
<ul>
<li>00AB2_U
<ul>
<li>P00AB2A</li>
<li>P00AB2B</li>
<li>P00AB2C</li>
<li>P00AB2D</li>
<li>P00AB2E</li>
</ul>
</li>
<li>00ABC
<ul>
<li>U00ABCA</li>
<li>U00ABCB</li>
<li>U00ABCC</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
jstree_charge.js
注入的结果$(document).ready(function(){
$("#treeviewer").jstree({
"checkbox" : {
"keep_selected_style" : false
},
"plugins" : [ "checkbox" ]
});
});
谢谢!
两个明显的问题:1)您正在注入ID为“treeviewer”的现有元素内的第二个ID为“treeviewer”的元素。 ID必须是唯一的。 2)假设您所指的js函数是jstree_charge.js中的函数,那么该函数仅在加载页面时运行一次(这是document.ready()包装它的原因)。在下载新内容后,您必须再次运行jstree函数,否则它不知道新内容。 – ADyson
你是对的! 1.行:document.getElementById(“treeviewer”)。innerHTML = this.responseText;确定它将被注入的地方,这就是为什么我引用id标签。所以代码被正确注入到指定的标签中。 2.-脚本在页面加载后运行,这就是为什么它没有收取js文件的原因。如何在下载内容后运行jstree功能? – Beaver