补分贴:(300分求助:JS中——动态声明事件处理函数)含源贴内容
以下只是部分代码,源文件太大了!下面关键部分临时加了注释!
<script type="text/javascript">
// 创建 JSONSTORE
var menuStore =new Ext.data.JsonStore({
url : 'loadRoleMenus.do',
root:'records',
fields:['code','name','jspurl','isLeaf','parentcode'],
autoLoad : true
});
// 加载数据
menuStore.on('load', function(_store, _records, _options){
for (var i = 0; i < _records.length; i++) {
var parentcode= _records[i].get('parentcode');
if (Ext.isEmpty(parentcode)){
addRootMenu(_records[i]);
}else{
continue;
}
}
});
// 添加根菜单
function addRootMenu(node) {
//Get XmlString
var sXmlString = "";
var sBegin = "<root><menu><ul>";
var sEnd = "</ul></menu></root>";
sXmlString = sBegin + getChildXmlString(node.data.code) + sEnd;
addMainMenu(node.data.name, sXmlString); // 添加根菜单
}
// 获取单个根菜单下的所有子菜单栏的 XML 字符串
function getChildXmlString(strParent) {
var sMenuItem = ""
var sLeft = "<li onclick=";
sLeft += '"';
sLeft += "{fnCallJspFuncPage('";
var sCenter = "')}";
sCenter += '">';
var sRight = "</li>";
for (var i = 0; i < menuStore.getCount(); i++) {
if (menuStore.getAt(i).data.parentcode==strParent) {
sMenuItem = sMenuItem + sLeft + menuStore.getAt(i).data.jspurl + sCenter + menuStore.getAt(i).data.name + sRight;
}
}
return sMenuItem;
}
// welcome.js end
// 将来想扩展成动态的数组对象,目前数组固定为 6 个元素
var arrMenuMain = new Array(6);
var intMenuIndx = 1;
arrMenuMain[0] = new Menu();
arrMenuMain[0].id = "MenuA";
arrMenuMain[1] = new Menu();
arrMenuMain[1].id = "MenuB";
arrMenuMain[2] = new Menu();
arrMenuMain[2].id = "MenuC";
arrMenuMain[3] = new Menu();
arrMenuMain[3].id = "MenuD";
arrMenuMain[4] = new Menu();
arrMenuMain[4].id = "MenuE";
arrMenuMain[5] = new Menu();
arrMenuMain[5].id = "MenuF";
// 添加根菜单的处理函数
function addMainMenu(strMenuItemText, strXmlString){
var tdMnu = document.getElementById("rowMenuMain").insertCell();
var sID = "Menu" + String.fromCharCode(intMenuIndx+64);
tdMnu.Id = "TD-" + sID;
// 产生 LI对象 及其属性串
var sRes = '<li id="';
sRes += sID;
sRes += '" ';
sRes += 'onmouseover="{this.className = ';
sRes += "'over'}";
sRes += '" onmouseout=';
sRes += '"{this.className = ';
sRes += "'out'}";
sRes += '"';
sRes += " class='out'>";
sRes += strMenuItemText + "</li>";
tdMnu.innerHTML = sRes;
tdMnu.width = 100;
tdMnu.align = "center";
arrMenuMain[intMenuIndx-1].width = 180;
arrMenuMain[intMenuIndx-1].xmlString = strXmlString;
arrMenuMain[intMenuIndx-1].init();
intMenuIndx += 1;
}
// 问题就出在下面的代码:BEGIN
document.getElementById("MenuA").onmousemove = function(e) {
for (var i = 0; i <= 5; i++) {
var sItm = "Menu" + String.fromCharCode(i+65);
if (sItm=="MenuA") {
arrMenuMain[i].show(e, "left");
} else {
arrMenuMain[i].close(e);
}
}
}
// MenuB、MenuC、MenuD、MenuE、MenuF 与 MenuA 中代码相同,此处略掉
// 问题就出在下面的代码:END
// IE 中的提示是这样的“document.getElementById("...")为空,或不是对象”
</script>
</body>
</html>相关推荐
JavaScript网页设计300例
**基础语法**:包括变量声明、数据类型(如字符串、数字、布尔值、对象等)、运算符、流程控制(如条件语句、循环结构)以及函数的使用。2.
300个JavaScript实战小例子合集
声明方式适用场景风险点推荐程度var老旧项目兼容、全局配置项作用域泄漏、提升陷阱⚠️ 不推荐新项目使用let需要重新赋值的局部变量(如计数器、临时状态)无重复声明、避免 TDZ 访问✅ 推荐const常量、函数、对象、数组、模块导入误以为值完全不可变✅✅ 首选(默认使用)💡最佳实践建议默认使用const,只有当你明确需要重新赋值时才降级为let;完全避免使用var,特别是在新项目中;
JavaScript网页设计实战案例精选300例
JavaScript是一种轻量级的编程语言,被广泛用于网页的动态交互,是前端开发中不可或缺的技术之一。它能够实现网页内容的动态更新、表单验证、事件处理等功能。由于其在浏览器端的执行特性,JavaScript可以为用户提供即时反馈,增强用户体验。在网络应用中,密码是用户身份识别的重要手段。然而,由于网络环境的复杂性,密码输入的安全性问题不容小觑。安全漏洞包括但不限于密码明文传输、弱密码策略、用户信息泄露等。为确保密码处理的安全性,采取有效的输入验证机制至关重要。
300个JavaScript小例子
**函数**:在JavaScript中,函数是可重用的代码块,可以作为参数传递,也可以作为返回值。函数表达式、函数声明、箭头函数等都是函数的常见形式。3.
300个JavaScript源码
压缩包中的300个JavaScript实例涵盖了以下方面:- **DOM操作**:通过JavaScript可以修改HTML元素,改变样式、内容或位置,实现动态更新页面。


