我的问题有点难以解释,但我会尝试。 我有2个jsp页面Outer.jsp和Inner.jsp
Outer.jsp
脚本:src =“tabs.js”
var PageTabs =“Tab1”
@include“Inner.jsp”
Inner.jsp
脚本:src =“tabs.js”
var PageTabs =“Tab2~Tab3~Tab4”
两个jsp页面都使用相同的tabs.js来呈现页面上的一些选项卡元素。 “PageTabs”变量是tabs.js使用的众多常见变量之一。那么渲染时会有什么好处,即使在渲染Outer.jsp的标签时,tabs.js也会采用最新的“PageTabs”变量,即PageTabs =“Tab2~Tab3~Tab4”。
注意:页面变量和tabs.js是从客户端收到的标准元素的一部分。因此必须使用它们来为应用程序提供相同的外观和感觉。 我需要的是一种隔离“Inner.jsp”访问“Outer.jsp”脚本的方法。这将防止制表符元素与要使用的变量混淆。
我希望我有点清楚。如果我需要提供更多说明,请告诉我。感谢。
答案 0 :(得分:0)
JavaScript在页面内从上到下解释,因此您的第二个PageTabs
值会覆盖第一个值。一种选择是为变量使用不同的名称(并参数化tabs.js函数,而不是依赖于全局变量。)
答案 1 :(得分:0)
使用jsp include时,一项非常有用的技巧就是使你的.js代码模块化。这也是封装代码和避免冲突的重要方法。
tab.js:
var tabModule = (function(my){
var model;
return {
setModel: function(model){/*....*/}
//other api functions
}
})(tabModoule||{});
Outer.jsp:
tabModule.setModel({PageTabs : "Tab1"});
Innder.jsp:
tabModule.setModel({PageTabs : "Tab2~Tab3~Tab4"});