我在页面中有一些更新页面某个部分的ajax脚本。问题在于输出在div元素中更新,它使得写入的任何javascript完全无用。在div元素内执行javascript ajax更新
用div编写的脚本是用php代码编写的,并且是动态的而不是静态的(因此将它们包括到主页中不是一种选择)。
基本构建适应和支持是这样的:
<div id="someid">
<script type="text/javascript">
//<![CDATA[
// some code that is dynamically created with php and is not working
//]]>
</script>
<!--Some html code that is dynamically created with php-->
<!--The html code created needs that script above-->
<!--Possibly more scripts that are...-->
<!--you guessed it! Dynamically created with php-->
</div>
可能的结果:
<div id="someid">
<script type="text/javascript">
//<![CDATA[
$(function() {
$("#20").datepick({dateFormat: 'yyyy-mm-dd'});
});
//]]>
</script>
<input id="20" type="text" name="somename" maxlength="10" />";
</div>
^所有上述值的可能用户输入动态变化。代码
例子:
<script type="text/javascript">
//<![CDATA[
function showsubs()
{
var xmlhttp;
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("someID").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","give.php",true);
xmlhttp.send();
}
//]]>
</script>
<input type="button" onclick="showsubs()">
<div id="someID"></div>
哪里give.php是简单的:
<script type="text/javascript">
$(function() {
$("#inputField2").datepick({dateFormat: 'yyyy-mm-dd'});
});
<br /><br />
<input type="text" size="12" id="inputField2" />
我自己也尝试这样的:(我有标记的DIV中每个脚本类)
<script type="text/javascript">
//<![CDATA[
console.log("start");
function evalme()
{
console.log("eval");
var a=document.getElementsByClassName('scriptttorun');
console.log(a.length);
for (var i=0;i<a.length;i++)
{
eval(document.getElementsByClassName('scripttorun')[i].innerHTML);
}
}
$('document').ready(evalme());//I call evalme on other circumstances as well
//]]>
</script>
但eval不会激活我的功能..
你有没有尝试在关闭div结束前放脚本?也许如果你提供一些输出的例子,帮助我们更好地理解问题 – keypaul
@keypaul我刚才编辑了我的问题。我需要把脚本放在顶部,这样我可以在后面的html代码中使用它的功能。问题是JavaScript不能在div元素内部执行,所以我需要做一些事情。 – dx4
你可以提供你的脚本或其中的一部分吗 – keypaul