html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
<script src="./jquery3.6.js">script>
head>
<body>
<div id="id1">
id1
<script id="s1">
let a = "qwe";
script>
div>
<div id="id2">
id2
<script id="s2">
let a = "aaaaa";
script>
div>
body>
html>
比如 两个 div 分别都有 script 标签,如何让它们之前互不影响呢?
每个script块之间不会相互影响,某个script块出错,不会影响其它块的运行
块之间定义的非局部变量和方法可以共享,(其实只是共享了全局变量和方法)
http://t.zoukankan.com/charling-p-3670022.html
按道理应该办不到
建议如下方式:希望采纳
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div id="id1">
id1
<script id="id1">
;(function () {
var a = 1
console.log('id1',a);
})();
</script>
</div>
<div id="id2">
id2
<script>
; (function () {
var a = 2
console.log('id2',a);
})();
</script>
</div>
</body>
</html>
方法名不同,变量不同
使用闭包的形式
(function () {
let a = '我是第一个script标签里的逻辑,其它script访问不到我'
})()
本身就不会相互影响
闭包
方法名,变量名,类名均不要设置相同
按步骤:
1,在页面中js执行完成后,清除所有变量。(执行此功能的js段设为x)
2,用dom获取每个js,排除x。
3,给每个js加唯一标记s1,s2等, 语法分析,并重写js段内的变量为s1_a,s1_b,s2_a,s2_b。如有函数用类似方法。函数体内的调用也要处理。用dom修改 tag script中的内容。
4,用eval依次执行每个tag script中的内容,排除x。
不明白问这个问题的点在哪里,这种格式的写法确定不会被打吗,想要完全不影响,就是用闭包
使用闭包,让每一个script标签里面的定义的函数默认自动执行一次,就不用担心调用出差的情况了
ID尽量区分 因为ID大于类标签