想实现的功能,简单地说,就是想在div.InnerHtml=(),括号里调用函数m_start和m_end,来生成菜单。
函数清单 和 样式 信息 都已经列出,经测试,能够使用。
问题是:
InitControlList()是我写的函数,即在div.InnerHtml中调用菜单生成函数,但是报错。求指教,帮忙看看div.InnerHtml=“”后的字符串是否有错,或者是其他错误。
函数清单:
m_start(nodeName,nodeRank):菜单组开始function m_start(name,tt) //菜单组开始
{
document.writeln('<tr><td class="bj">'+(tt==1?'1':'0')+'</td>');
// document.writeln('<tr><td><img src="js/UniversePlan/folder.png" alt=""/></td>');
document.writeln('<td><a href="#" onclick="zgmm()">'+name+'</a></td>');
document.writeln('</tr>');
document.writeln('<tr style="display: '+(tt==1?'block':'none')+';">');
document.writeln('<td class="bj"> </td>');
document.writeln('<td>');
document.writeln('<table border="0" cellpadding="0" cellspacing="0">');
} m_end():菜单组结束function m_end() //菜单组结束
{
document.writeln('</table></td></tr>');
} zgmm():显示菜单的子菜单function zgmm()
{
//当前发生事件的对象的父对象的上一个兄弟对象
var ero = event.srcElement.parentElement.previousSibling;
//当前发生事件的对象的父对象的父对象的下一个兄弟对象
var mo = event.srcElement.parentElement.parentElement.nextSibling;
mo.style.display = (mo.style.display=="none")?"block":"none";
ero.innerHTML = (mo.style.display=="none")?"0":"1";
}
使用到的样式<style>
#A1 td { vertical-align: top; }
#A1 td.bj { font-family: Wingdings; color: #FF9933; text-align: center; }
#A1 td.bj , #A1 td.kg { width: 24; }
#A1 a:link , #A1 a: visited { color: #cc0080; text-decoration: none; }
#A1 a:hover { color: #0ff080; text-decoration: none; }
</style>
想实现的功能//xml文件名生成1级节点(只获取xml文件名)
function InitControlList()
{
document.getElementById("tv_ControlPlan").innerHTML ="<table border='0' cellpadding='0' cellspacing='0' width='100%' id='A1'>";
document.getElementById("tv_ControlPlan").innerHTML+="<script type ='text//javascript'>";
document.getElementById("tv_ControlPlan").innerHTML+=m_start("计划1",1);
document.getElementById("tv_ControlPlan").innerHTML+=m_end();
document.getElementById("tv_ControlPlan").innerHTML+="<//script><//table>";
}
函数清单 和 样式 信息 都已经列出,经测试,能够使用。
问题是:
InitControlList()是我写的函数,即在div.InnerHtml中调用菜单生成函数,但是报错。求指教,帮忙看看div.InnerHtml=“”后的字符串是否有错,或者是其他错误。
函数清单:
m_start(nodeName,nodeRank):菜单组开始function m_start(name,tt) //菜单组开始
{
document.writeln('<tr><td class="bj">'+(tt==1?'1':'0')+'</td>');
// document.writeln('<tr><td><img src="js/UniversePlan/folder.png" alt=""/></td>');
document.writeln('<td><a href="#" onclick="zgmm()">'+name+'</a></td>');
document.writeln('</tr>');
document.writeln('<tr style="display: '+(tt==1?'block':'none')+';">');
document.writeln('<td class="bj"> </td>');
document.writeln('<td>');
document.writeln('<table border="0" cellpadding="0" cellspacing="0">');
} m_end():菜单组结束function m_end() //菜单组结束
{
document.writeln('</table></td></tr>');
} zgmm():显示菜单的子菜单function zgmm()
{
//当前发生事件的对象的父对象的上一个兄弟对象
var ero = event.srcElement.parentElement.previousSibling;
//当前发生事件的对象的父对象的父对象的下一个兄弟对象
var mo = event.srcElement.parentElement.parentElement.nextSibling;
mo.style.display = (mo.style.display=="none")?"block":"none";
ero.innerHTML = (mo.style.display=="none")?"0":"1";
}
使用到的样式<style>
#A1 td { vertical-align: top; }
#A1 td.bj { font-family: Wingdings; color: #FF9933; text-align: center; }
#A1 td.bj , #A1 td.kg { width: 24; }
#A1 a:link , #A1 a: visited { color: #cc0080; text-decoration: none; }
#A1 a:hover { color: #0ff080; text-decoration: none; }
</style>
想实现的功能//xml文件名生成1级节点(只获取xml文件名)
function InitControlList()
{
document.getElementById("tv_ControlPlan").innerHTML ="<table border='0' cellpadding='0' cellspacing='0' width='100%' id='A1'>";
document.getElementById("tv_ControlPlan").innerHTML+="<script type ='text//javascript'>";
document.getElementById("tv_ControlPlan").innerHTML+=m_start("计划1",1);
document.getElementById("tv_ControlPlan").innerHTML+=m_end();
document.getElementById("tv_ControlPlan").innerHTML+="<//script><//table>";
}
{
document.getElementById("tv_ControlPlan").innerHTML ="<table border='0' cellpadding='0' cellspacing='0' width='100%' id='A1'>";
document.getElementById("tv_ControlPlan").innerHTML+="<//table>";
m_start("计划1",1);
m_end();
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<script type ='text/javascript'>
function a(){
alert(2);
}
function InitControlList()
{
alert(1);
var append = "";
append += "<a href='javascript:a()'>aaa</a>";
alert(append);
document.getElementById("tv_ControlPlan").innerHTML=append;
}
</script> </head> <body>
<div id="tv_ControlPlan"></div>
<input type="button" onclick="InitControlList()" value="test">
</body>
</html>
function m_start(name,tt) //菜单组开始
{
document.writeln('<tr><td class="bj">'+(tt==1?'1':'0')+'</td>');
// document.writeln('<tr><td><img src="js/UniversePlan/folder.png" alt=""/></td>');
document.writeln('<td><a href="#" onclick="zgmm()">'+name+'</a></td>');
document.writeln('</tr>');
document.writeln('<tr style="display: '+(tt==1?'block':'none')+';">');
document.writeln('<td class="bj"> </td>');
document.writeln('<td>');
document.writeln('<table border="0" cellpadding="0" cellspacing="0">');
}1、都没有返回值!
2、尽量少用document.writedocument.getElementById("tv_ControlPlan").innerHTML ="<table border='0' cellpadding='0' cellspacing='0' width='100%' id='A1'>";
document.getElementById("tv_ControlPlan").innerHTML+="<script type ='text//javascript'>";
你table 标签内加script 标签是什么意思!function m_start(name,tt) //菜单组开始
{
document.writeln('<tr><td class="bj">'+(tt==1?'1':'0')+'</td>');
// document.writeln('<tr><td><img src="js/UniversePlan/folder.png" alt=""/></td>');
document.writeln('<td><a href="#" onclick="zgmm()">'+name+'</a></td>');
document.writeln('</tr>');
document.writeln('<tr style="display: '+(tt==1?'block':'none')+';">');
document.writeln('<td class="bj"> </td>');
document.writeln('<td>');
document.writeln('<table border="0" cellpadding="0" cellspacing="0">');
}
改成function m_start(name,tt) //菜单组开始
{
var arr=[];
arr.push('<tr><td class="bj">'+(tt==1?'1':'0')+'</td>');
// arr.push('<tr><td><img src="js/UniversePlan/folder.png" alt=""/></td>');
arr.push('<td><a href="#" onclick="zgmm()">'+name+'</a></td>');
arr.push('</tr>');
arr.push('<tr style="display: '+(tt==1?'block':'none')+';">');
arr.push('<td class="bj"> </td>');
arr.push('<td>');
arr.push('<table border="0" cellpadding="0" cellspacing="0">');
return arr.join("");
}其它的你自己改了
{
var temp = '<tr><td class="bj">'+(tt==1?'1':'0')+'</td>';
temp += '<td><a href="#" onclick="zgmm()">'+name+'</a></td>';
temp += '</tr>';
temp += '<tr style="display: '+(tt==1?'block':'none')+';">';
temp += '<td class="bj"> </td>';
temp += '<td>';
temp += '<table border="0" cellpadding="0" cellspacing="0">';
return temp;
}
function m_end() //菜单组结束
{
return '</table></td></tr>';
}function InitControlList()
{
document.getElementById("tv_ControlPlan").innerHTML ="<table border='0' cellpadding='0' cellspacing='0' width='100%' id='A1'>";
document.getElementById("tv_ControlPlan").innerHTML+=m_start("计划1",1);
document.getElementById("tv_ControlPlan").innerHTML+=m_end();
document.getElementById("tv_ControlPlan").innerHTML+="<\/table>";
}
5# 得分 先放到字符串里,再一次写进去确实能够监视了~~
当然这样用是可以的,你还可以直接用</script></table>
/并不是特殊符号
如果是\之类有特殊用法的就需要用到转义符
\\表示单字符\
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title><style>
#A1 td { vertical-align: top; }
#A1 td.bj { font-family: Wingdings; color: #FF9933; text-align: center; }
#A1 td.bj , #A1 td.kg { width: 24; }
#A1 a:link , #A1 a: visited { color: #cc0080; text-decoration: none; }
#A1 a:hover { color: #0ff080; text-decoration: none; }
</style>
<script>
function $(id){return document.getElementById(id)}
function InitControlList(){
var sHTML='';
sHTML+="<table border='0' cellpadding='0' cellspacing='0' width='100%' id='A1'>";
//sHTML+="<script type ='text/javascript'>";
sHTML+=m_start("计划1",1);
sHTML+=m_end();
// sHTML+="<//script></table>";
sHTML+="</table>";
$("tv_ControlPlan").innerHTML=sHTML;
}function zgmm(o){
alert(o.tagName)
alert(o.parentNode.nodeName)
debugger;
//取当前对象的父对象的前一个同级节点对象
var ero = o.parentNode.previousSibling;alert(ero);
//取当前对象的父对象的父对象的同级节点对象
var mo = o.parentNode.parentElement.nextSibling;alert(mo);
if(mo){mo.style.display = (mo.style.display=="none")?"block":"none";}
if(ero){ero.innerHTML = (mo.style.display=="none")?"0":"1";}
}function m_start(name,tt){ //菜单组开始
var s=''
s+='<tr>'
s+='<td class="bj">'+(tt==1?'1':'0')+'</td>';
// document.writeln('<tr><td><img src="js/UniversePlan/folder.png" alt=""/></td>');
s+='<td><a href="#" onclick="zgmm(this)">'+name+'</a></td>';
s+='</tr>';
s+='<tr style="display: '+(tt==1?'block':'none')+';">';
s+='<td class="bj"> </td>';
s+='<td>';
s+='<table border="0" cellpadding="0" cellspacing="0">';
return s;
}function m_end(){ return '</table></td></tr>'; } //菜单组结束 window.onload=function(){ InitControlList() }</script>
<body>
<div id=tv_ControlPlan></div>
</body>
</html>
alert(o.tagName)
alert(o.parentNode.nodeName)
debugger;
//取当前对象的父对象的前一个同级节点对象
var ero = o.parentNode.previousSibling;alert(ero);
//取当前对象的父对象的父对象的同级节点对象
var mo = o.parentNode.parentElement.nextSibling;alert(mo);
if(mo){mo.style.display = (mo.style.display=="none")?"block":"none";}
if(ero){ero.innerHTML = (mo.style.display=="none")?"0":"1";}
}把红字的parentElement改为parentNode