我有一个主页,称之为 Main.php。在此页面上,是一个按钮,当单击该按钮时,将使用来自 Results.php 的结果设置一个 div 的 innerHTML(已经在 Main.php 上,称为 divResults)。
当调用Results.php 时,返回的HTML“这些是结果”被正确接收并设置为Main.php 上的divResults 的内容。但是,Results.php 中的任何 javascript 都不会执行。例如,我尝试做一个简单的 window.alert。这是示例代码:
Main.php 链接按钮开始操作:
<img src="$MyImageSource" onclick=\"ExpandDropdownDiv()\" />
Main.php javascript 函数 ExpandDropdownDiv():
function ExpandDropdownDiv(){
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 (xmlhttp.readyState==4)/* && xmlhttp.status==200) */
{
document.getElementById("divResults").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","Results.php",true);
xmlhttp.send();
}
Results.php 代码示例:
<script type="text/javascript">
alert("Success");
</script>
These Are The Results
------------------ 编辑 - 更新 ------------------
来自 Results.php 的简单警报只是一个示例。如果我能够让它工作,我相信我可以自己解决剩下的问题。但是,我注意到一些评论建议在我设置 div 的 innerHTML 后将警报放在 Main.php 的 javascript 中。所以,让我解释一下在设置 div 之后我真正想用 javascript 做什么。
图 1显示了一些普通的“选择”html 元素,这些元素已使用 jquery 和下拉检查列表扩展 (.js) 进行了转换。当用户单击底部的彩色向下箭头时,div 展开,(图 2)并在另一个 .php 文件中生成另外两个“Select”元素......返回 html,并放置在 div 中。因此,我不需要重新加载整个页面,并且可以将新的选择下拉菜单放在现有下拉菜单的下方。
问题是,要“转换”这些普通的选择元素,需要针对该 HTML 执行一些 javascript:
$(document).ready(function() {
$(".MultiSelect").dropdownchecklist( {firstItemChecksAll: true, maxDropHeight: 300 , searchTextbox: true, width: 100, textFormatFunction: function(options) {
var selectedOptions = options.filter(":selected");
var countOfSelected = selectedOptions.size();
var size = options.size();
switch(countOfSelected) {
case 0: return "All";
case 1: return selectedOptions.text();
/* case size: return "All"; */
default: return countOfSelected + " selected";
}
}
}
);
}
所以,不知何故,我需要能够针对从另一个 .php 文件生成的 HTML 执行 javascript。只需调用上面的代码,在我的 divs innerHTML 被填充后,只会重新生成已经存在的下拉菜单,而不是两个新的下拉菜单。
示例图像