[英]Placing 2 copies of javascript on same page
我已经使用约500百万行Javascript和一些html和css实现了某些功能。 我想在同一页面上放置2个实例。 这导致名称空间冲突。
我可以想到一种避免这种情况的乏味方法:*由于html元素是通过Java编程语言中的ID进行编程访问的,因此,我需要给它们提供不同的ID。 我需要2个版本的javascript函数来引用这些ID。 *我需要单独版本的javascript状态变量。
是否有一种更简单的方法,不需要太多的代码重复,但是具有不同的名称? 在这种意义上,即在单独的命名空间中,是否有任何方法可以使每个副本的行为像一个单独的文档?
谢谢
是的:让代码的最外层功能接受对其进行操作的id
(或其他选择器),然后将其调用两次。
例如,
function doSomethingNifty(id) {
// Your code doing nifty things with `id`
}
称它为:
doSomethingNifty("foo");
doSomethingNifty("bar");
您在 doSomethingNifty
定义的任何函数都靠近id
参数,因此它们可以访问与它们相关的对doSomethingNifty
的调用相关的id
。
这是一个完整但非常简单的示例。 很棒的是,这很容易扩展。 模式不会改变,您只需要在doSomethingNifty
更多内容即可。
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Simple Closure Example</title>
</head>
<body>
<div id="foo">I'm foo, click me</div>
<div id="bar">I'm bar, click me</div>
<script>
function doSomethingNifty(id) {
document.getElementById(id).onclick = showMyInfo;
function showMyInfo() {
alert("id = " + id + ", text = " + this.innerHTML);
}
}
doSomethingNifty("foo");
doSomethingNifty("bar");
</script>
</body>
</html>
无需过多介绍您要做什么,可以对其进行重构。
例如,为什么不简单地先编写HTML,然后再以完成所需工作的方式编写JS,而不要锁定不可移植的代码。
有些事情无法很好地扩展(例如,如果在同一页面上需要4个实例,会发生什么情况?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.