我在頁面中有一些更新頁面某個部分的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