■■■■■■■■■■求助一个动态生成HTML的问题■■■■■■■■■■

godwu 2006-10-20 02:35:19
要实现一个功能,html中读取服务器上xml文件中的节点,在一个div中,动态生成几个图片(后面带文字说明),然后点图片的时候,执行一个脚本方法。
如果正常的使用<input type="image" src="1.jpg" width="284" height="254" onClick="test('b.wma')" title="b.wma">可以正常运行,test这个脚本也能执行。但是如果我在一个table里面,动态生成这些代码(代码贴在后面),结果动态生成的时候,不管怎么设input的属性(如onclcik,onmouseover等,都不触发对应的事件),代码如下。
说了这么多,大体意思就是,动态生成的代码,触发不了脚本事件,请大家帮看一下。
html里面放了一个<div id="div1" style="width:850px;height:500px;overflow:auto"><table id="movie_list_tb"></table></div>来放动态生成的table。





function createMovieTable(){
var objTable = document.getElementById("movie_list_tb"); //table object
var tr_movie ;
var td_movie ;
var subMovieTbElement ; //each movie table object
var rowCount ; //movie count
var tr_movie_sub ;
var td_movie_sub ;
var txtNode_movie_sub ;
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); //xml object
xmlDoc.async="false" ;
xmlDoc.load("movies.xml") ;
rowCount = xmlDoc.childNodes[1].childNodes.length;
//alert(xmlDoc.childNodes[1].childNodes.length);

//table property initialization
objTable.setAttribute("width","850");

for(var loopi =0 ; loopi < rowCount ; loopi ++){
var imageElement ;
var pElement;
var hrefElement;
//movie loop
tr_movie = objTable.insertRow(loopi);
td_movie = tr_movie.insertCell(0);
subMovieTbElement = document.createElement("table");
subMovieTbElement.setAttribute("width","798");
//tr 1 bgcolor="#C1F0FF"
tr_movie_sub = subMovieTbElement.insertRow(0);
tr_movie_sub.setAttribute("bgcolor","#C1F0FF");
//td 1 height="16" colspan="2"
td_movie_sub = tr_movie_sub.insertCell(0);
td_movie_sub.setAttribute("height","16");
td_movie_sub.setAttribute("colspan","2");
txtNode_movie_sub = document.createTextNode("this is movie "+ loopi + " !!!");
td_movie_sub.appendChild(txtNode_movie_sub);
//tr 2 (two td)
tr_movie_sub = subMovieTbElement.insertRow(1);
//td width="297" height="256"
td_movie_sub = tr_movie_sub.insertCell(0);
td_movie_sub.setAttribute("width","294");
td_movie_sub.setAttribute("height","283");
imageElement = document.createElement("input");
imageElement.setAttribute("type","image");
imageElement.setAttribute("width","284");
imageElement.setAttribute("height","254");
imageElement.setAttribute("src",xmlDoc.childNodes[1].childNodes[0].childNodes[0].text);
//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[0].text);
imageElement.setAttribute("onMouseOver","alert(11111);");//xmlDoc.childNodes[1].childNodes[0].childNodes[1].text
//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[1].text);
imageElement.setAttribute("title",xmlDoc.childNodes[1].childNodes[0].childNodes[2].text);
//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[2].text);
td_movie_sub.appendChild(imageElement);
//td width="491"
td_movie_sub = tr_movie_sub.insertCell(1);
td_movie_sub.setAttribute("width","491");
pElement = document.createElement("p");
txtNode_movie_sub = document.createTextNode("hello hello hello hello "+ loopi + " !!!");
pElement.appendChild(txtNode_movie_sub);
td_movie_sub.appendChild(pElement);
for (var loopj = 0 ; loopj < 5 ; loopj ++){
pElement = document.createElement("p");
txtNode_movie_sub = document.createTextNode("hello "+ loopi + " !!!");
pElement.appendChild(txtNode_movie_sub);
td_movie_sub.appendChild(pElement);
}
pElement = document.createElement("p");
pElement.setAttribute("style","font-size:x-large");
hrefElement = document.createElement("a");
hrefElement.setAttribute("href",xmlDoc.childNodes[1].childNodes[0].childNodes[3].text);
//alert(xmlDoc.childNodes[1].childNodes[0].childNodes[3].text);
txtNode_movie_sub = document.createTextNode("Here is a link ~~~~~~~~~~~~~~~!!!!!!!!!!!!!!!!!!");
hrefElement.appendChild(txtNode_movie_sub);
pElement.appendChild(hrefElement);

td_movie.appendChild(subMovieTbElement);
}
}
xml文件
<?xml version="1.0" ?>
<movie_list>
<movie1><imageSrc>1.jpg</imageSrc><eventElement>test('b.wma')</eventElement><imageTitle>this is "b.wma" !!!!</imageTitle><linkElement>test-2.htm</linkElement></movie1>
<movie2><imageSrc>1.jpg</imageSrc><eventElement>test('a.wma')</eventElement><imageTitle>this is "a.wma" !!!!</imageTitle><linkElement>test-2.htm</linkElement></movie2>
<movie3><imageSrc>1.jpg</imageSrc><eventElement>test('b.wma')</eventElement><imageTitle>this is "b.wma" !!!!</imageTitle><linkElement>test-2.htm</linkElement></movie3>
</movie_list>
...全文
117 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
godwu 2006-10-20
  • 打赏
  • 举报
回复
简单的说,就是我动态生成html的时候,生成的节点,元素里面的事件不好用。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧