js代码 在浏览器中的运行 有理即给分

zhishiheng 2014-07-14 03:37:03
我又一个mainDiv 三个按钮,每点击一下就就用ajax向服务器请求一个页面,页面中包含js代码
然后用 $('#maindiv').html(response)替换掉,浏览器开始解析。
下次点击之后js代码还存在吗?
就是我点击按钮1 发过来一段 js+html 点按钮2发过来一段js+html 在点按钮1 刚刚发过来的js代码 会被清除吗?还是点了之后就开始运行了呢?
...全文
318 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
md5e 2014-07-14
  • 打赏
  • 举报
回复
你点击bnt1时,应该就用unbind把bnt1的onclick去卸载掉,成功执行.html(xxx)后再重新绑定
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 18 楼 ayanamireizero 的回复:
$.ajax({ type: "Get", url: '@Url.Content("~/AttSin/Index")', async: false, data: { rand: Math.random() }, beforeSend: function () { }, error: function (request) { alert("Connect Error"); }, success: function (response) { $('#HomeMain').html(response); $("#btn1").hide(); $("#btn2").show(); } }); 类似这样吧,默认把btn2隐藏,只有点击btn1加载完才显示btn2,同时隐藏btn1,点btn2的时候也一样....这样就不会btn1和btn2来回点了.... 点快了不是没执行完就是还没加载完....
我这是四个主界面上的按钮啊 没法隐藏 我用的disable 可是没起作用 没法控制让js执行完之后 才让他们可用 直接就是页面发回来 就可用了 头疼喽
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 17 楼 liuchaolin 的回复:
好吧 $(document).ready(function () { alert($("#abc").html()); $("#abc").html("abc<script>alert('abc');<\/script>"); alert($("#abc").html()); }); 这样是可以的 ajax有一个参数async: false 可以锁住浏览器直到执行完成
锁不住我的js执行完啊
ayanamireizero 2014-07-14
  • 打赏
  • 举报
回复
$.ajax({ type: "Get", url: '@Url.Content("~/AttSin/Index")', async: false, data: { rand: Math.random() }, beforeSend: function () { }, error: function (request) { alert("Connect Error"); }, success: function (response) { $('#HomeMain').html(response); $("#btn1").hide(); $("#btn2").show(); } }); 类似这样吧,默认把btn2隐藏,只有点击btn1加载完才显示btn2,同时隐藏btn1,点btn2的时候也一样....这样就不会btn1和btn2来回点了.... 点快了不是没执行完就是还没加载完....
md5e 2014-07-14
  • 打赏
  • 举报
回复
好吧 $(document).ready(function () { alert($("#abc").html()); $("#abc").html("abc<script>alert('abc');<\/script>"); alert($("#abc").html()); }); 这样是可以的 ajax有一个参数async: false 可以锁住浏览器直到执行完成
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 15 楼 ayanamireizero 的回复:
[quote=引用 14 楼 zhishiheng 的回复:]
[quote=引用 11 楼 ayanamireizero 的回复:]
[quote=引用 9 楼 zhishiheng 的回复:]
[quote=引用 8 楼 ayanamireizero 的回复:]
[quote=引用 7 楼 zhishiheng 的回复:]
[quote=引用 4 楼 ayanamireizero 的回复:]
不行返回带<script></script>的东东吧.....
你可以把3个JS都放在一个js文件下啊..


$.ajax({
type: "Get",
url: '@Url.Content("~/AttSin/Index")',
async: false,
data: { rand: Math.random() },
beforeSend: function () {

},
error: function (request) {
alert("Connect Error");
},
success: function (response) {
$('#HomeMain').html(response);
}
});

可以的噢[/quote]

试了下,真心可以诶.....
你用
$('#HomeMain').html(response);
HomeMain这个DIV里的内容肯定被清除掉了,如果用append可以保留第一个按钮点击的js+html
如果你只想保留js...我只能想到把js和html用"|"分开,然后用split拆分,把js用append放一个div中,把html用.html放HomeMain这个div中[/quote]
我加载的页面中有html,有js,我的js是对html中div的操作,现在是按钮切换点击快了的话 即 我点击第一个按钮,HomeMain 这个div中的js还没有执行完,我就点击第二个按钮,然后就出现报错的 情况 (找不到元素的错),所有我怀疑 是js没有被替换掉[/quote]

点快了你的AJAX还没加载完,那第一次点击的JS不就等于没加载到,那点第二次(第二个按钮)的时候肯定执行不到点击第一个按钮应该加载的JS了啊...

所以我才说建议把按钮1和按钮2点击后应该加载的JS直接写到一个JS里.保证不管你咋点,两次按钮的JS都先被加载了啊[/quote]
报错的原因就是因为js操作找不到 元素 写在一起肯定就是点一下 错一下[/quote]

你是在点第一个按钮是在HomeMain这个DIV里添加了比如另外一个<div id="div2">xxxx</div>这样吗?然后第二个按钮是比如点击第二个DIV咋滴咋滴?
如果这样,你第一按钮点击没加载div2的div,就点按钮2那肯定不行了....而且如果div2的DIV加载完你这样也可能出错.

<script>
function div2function(){
$("#div2").on("click",function(){
alert("haha");
}
div2function();
}
</script>

需要这样,如果直接

<script>
$(function(){
$("#div2").on("click",function(){
alert("haha");
})
</script>

这样也会报错的[/quote]
ayanamireizero 2014-07-14
  • 打赏
  • 举报
回复
引用 14 楼 zhishiheng 的回复:
[quote=引用 11 楼 ayanamireizero 的回复:] [quote=引用 9 楼 zhishiheng 的回复:] [quote=引用 8 楼 ayanamireizero 的回复:] [quote=引用 7 楼 zhishiheng 的回复:] [quote=引用 4 楼 ayanamireizero 的回复:] 不行返回带<script></script>的东东吧..... 你可以把3个JS都放在一个js文件下啊..

$.ajax({
                  type: "Get",
                  url: '@Url.Content("~/AttSin/Index")',
                  async: false,
                  data: { rand: Math.random() },
                  beforeSend: function () {
                     
                  },
                  error: function (request) {
                      alert("Connect Error");
                  },
                  success: function (response) {
                      $('#HomeMain').html(response);
                  }
              });
可以的噢[/quote] 试了下,真心可以诶..... 你用 $('#HomeMain').html(response); HomeMain这个DIV里的内容肯定被清除掉了,如果用append可以保留第一个按钮点击的js+html 如果你只想保留js...我只能想到把js和html用"|"分开,然后用split拆分,把js用append放一个div中,把html用.html放HomeMain这个div中[/quote] 我加载的页面中有html,有js,我的js是对html中div的操作,现在是按钮切换点击快了的话 即 我点击第一个按钮,HomeMain 这个div中的js还没有执行完,我就点击第二个按钮,然后就出现报错的 情况 (找不到元素的错),所有我怀疑 是js没有被替换掉[/quote] 点快了你的AJAX还没加载完,那第一次点击的JS不就等于没加载到,那点第二次(第二个按钮)的时候肯定执行不到点击第一个按钮应该加载的JS了啊... 所以我才说建议把按钮1和按钮2点击后应该加载的JS直接写到一个JS里.保证不管你咋点,两次按钮的JS都先被加载了啊[/quote] 报错的原因就是因为js操作找不到 元素 写在一起肯定就是点一下 错一下[/quote] 你是在点第一个按钮是在HomeMain这个DIV里添加了比如另外一个<div id="div2">xxxx</div>这样吗?然后第二个按钮是比如点击第二个DIV咋滴咋滴? 如果这样,你第一按钮点击没加载div2的div,就点按钮2那肯定不行了....而且如果div2的DIV加载完你这样也可能出错.

<script>
function div2function(){
    $("#div2").on("click",function(){
        alert("haha");
    }
    div2function();
}
</script>
需要这样,如果直接

<script>
$(function(){
$("#div2").on("click",function(){
    alert("haha");
})
</script>
这样也会报错的
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 11 楼 ayanamireizero 的回复:
[quote=引用 9 楼 zhishiheng 的回复:] [quote=引用 8 楼 ayanamireizero 的回复:] [quote=引用 7 楼 zhishiheng 的回复:] [quote=引用 4 楼 ayanamireizero 的回复:] 不行返回带<script></script>的东东吧..... 你可以把3个JS都放在一个js文件下啊..

$.ajax({
                  type: "Get",
                  url: '@Url.Content("~/AttSin/Index")',
                  async: false,
                  data: { rand: Math.random() },
                  beforeSend: function () {
                     
                  },
                  error: function (request) {
                      alert("Connect Error");
                  },
                  success: function (response) {
                      $('#HomeMain').html(response);
                  }
              });
可以的噢[/quote] 试了下,真心可以诶..... 你用 $('#HomeMain').html(response); HomeMain这个DIV里的内容肯定被清除掉了,如果用append可以保留第一个按钮点击的js+html 如果你只想保留js...我只能想到把js和html用"|"分开,然后用split拆分,把js用append放一个div中,把html用.html放HomeMain这个div中[/quote] 我加载的页面中有html,有js,我的js是对html中div的操作,现在是按钮切换点击快了的话 即 我点击第一个按钮,HomeMain 这个div中的js还没有执行完,我就点击第二个按钮,然后就出现报错的 情况 (找不到元素的错),所有我怀疑 是js没有被替换掉[/quote] 点快了你的AJAX还没加载完,那第一次点击的JS不就等于没加载到,那点第二次(第二个按钮)的时候肯定执行不到点击第一个按钮应该加载的JS了啊... 所以我才说建议把按钮1和按钮2点击后应该加载的JS直接写到一个JS里.保证不管你咋点,两次按钮的JS都先被加载了啊[/quote] 报错的原因就是因为js操作找不到 元素 写在一起肯定就是点一下 错一下
ayanamireizero 2014-07-14
  • 打赏
  • 举报
回复
引用 12 楼 liuchaolin 的回复:
[quote=引用 10 楼 zhishiheng 的回复:] [quote=引用 2 楼 liuchaolin 的回复:] 直接报错,js要么只能加载纯的js代码(不带<script></script>),可么只能加载纯的html标签
可以啊 斑竹[/quote] <form id="form1" runat="server"> <div id="abc"> 123 </div> </form> <script> $(document).ready(function () { alert($("#abc").html()); $("#abc").html("abc<script>alert('abc');</ script>"); alert($("#abc").html()); }); </script> 这样可以?[/quote] 这样不行,但是用AJAX可以....

public string Test()
        {
            return "<script>$(function(){$('#id2').on('click',function(){alert('haha')})})</script>";
        }

<div id="test">

</div>
<div id="id1">1</div>
<div id="id2">2</div>
<script>
    $(function () {
        $("#id1").on("click", function () {
            $.post("/Home/Test", {

            },
            function (data) {
                $("#test").html(data);
            }
            )
        })
    })
</script>
md5e 2014-07-14
  • 打赏
  • 举报
回复
引用 10 楼 zhishiheng 的回复:
[quote=引用 2 楼 liuchaolin 的回复:] 直接报错,js要么只能加载纯的js代码(不带<script></script>),可么只能加载纯的html标签
可以啊 斑竹[/quote] <form id="form1" runat="server"> <div id="abc"> 123 </div> </form> <script> $(document).ready(function () { alert($("#abc").html()); $("#abc").html("abc<script>alert('abc');</ script>"); alert($("#abc").html()); }); </script> 这样可以?
ayanamireizero 2014-07-14
  • 打赏
  • 举报
回复
引用 9 楼 zhishiheng 的回复:
[quote=引用 8 楼 ayanamireizero 的回复:] [quote=引用 7 楼 zhishiheng 的回复:] [quote=引用 4 楼 ayanamireizero 的回复:] 不行返回带<script></script>的东东吧..... 你可以把3个JS都放在一个js文件下啊..

$.ajax({
                  type: "Get",
                  url: '@Url.Content("~/AttSin/Index")',
                  async: false,
                  data: { rand: Math.random() },
                  beforeSend: function () {
                     
                  },
                  error: function (request) {
                      alert("Connect Error");
                  },
                  success: function (response) {
                      $('#HomeMain').html(response);
                  }
              });
可以的噢[/quote] 试了下,真心可以诶..... 你用 $('#HomeMain').html(response); HomeMain这个DIV里的内容肯定被清除掉了,如果用append可以保留第一个按钮点击的js+html 如果你只想保留js...我只能想到把js和html用"|"分开,然后用split拆分,把js用append放一个div中,把html用.html放HomeMain这个div中[/quote] 我加载的页面中有html,有js,我的js是对html中div的操作,现在是按钮切换点击快了的话 即 我点击第一个按钮,HomeMain 这个div中的js还没有执行完,我就点击第二个按钮,然后就出现报错的 情况 (找不到元素的错),所有我怀疑 是js没有被替换掉[/quote] 点快了你的AJAX还没加载完,那第一次点击的JS不就等于没加载到,那点第二次(第二个按钮)的时候肯定执行不到点击第一个按钮应该加载的JS了啊... 所以我才说建议把按钮1和按钮2点击后应该加载的JS直接写到一个JS里.保证不管你咋点,两次按钮的JS都先被加载了啊
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 2 楼 liuchaolin 的回复:
直接报错,js要么只能加载纯的js代码(不带<script></script>),可么只能加载纯的html标签
可以啊 斑竹
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 8 楼 ayanamireizero 的回复:
[quote=引用 7 楼 zhishiheng 的回复:] [quote=引用 4 楼 ayanamireizero 的回复:] 不行返回带<script></script>的东东吧..... 你可以把3个JS都放在一个js文件下啊..

$.ajax({
                  type: "Get",
                  url: '@Url.Content("~/AttSin/Index")',
                  async: false,
                  data: { rand: Math.random() },
                  beforeSend: function () {
                     
                  },
                  error: function (request) {
                      alert("Connect Error");
                  },
                  success: function (response) {
                      $('#HomeMain').html(response);
                  }
              });
可以的噢[/quote] 试了下,真心可以诶..... 你用 $('#HomeMain').html(response); HomeMain这个DIV里的内容肯定被清除掉了,如果用append可以保留第一个按钮点击的js+html 如果你只想保留js...我只能想到把js和html用"|"分开,然后用split拆分,把js用append放一个div中,把html用.html放HomeMain这个div中[/quote] 我加载的页面中有html,有js,我的js是对html中div的操作,现在是按钮切换点击快了的话 即 我点击第一个按钮,HomeMain 这个div中的js还没有执行完,我就点击第二个按钮,然后就出现报错的 情况 (找不到元素的错),所有我怀疑 是js没有被替换掉
ayanamireizero 2014-07-14
  • 打赏
  • 举报
回复
引用 7 楼 zhishiheng 的回复:
[quote=引用 4 楼 ayanamireizero 的回复:] 不行返回带<script></script>的东东吧..... 你可以把3个JS都放在一个js文件下啊..

$.ajax({
                  type: "Get",
                  url: '@Url.Content("~/AttSin/Index")',
                  async: false,
                  data: { rand: Math.random() },
                  beforeSend: function () {
                     
                  },
                  error: function (request) {
                      alert("Connect Error");
                  },
                  success: function (response) {
                      $('#HomeMain').html(response);
                  }
              });
可以的噢[/quote] 试了下,真心可以诶..... 你用 $('#HomeMain').html(response); HomeMain这个DIV里的内容肯定被清除掉了,如果用append可以保留第一个按钮点击的js+html 如果你只想保留js...我只能想到把js和html用"|"分开,然后用split拆分,把js用append放一个div中,把html用.html放HomeMain这个div中
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 4 楼 ayanamireizero 的回复:
不行返回带<script></script>的东东吧..... 你可以把3个JS都放在一个js文件下啊..

$.ajax({
                  type: "Get",
                  url: '@Url.Content("~/AttSin/Index")',
                  async: false,
                  data: { rand: Math.random() },
                  beforeSend: function () {
                     
                  },
                  error: function (request) {
                      alert("Connect Error");
                  },
                  success: function (response) {
                      $('#HomeMain').html(response);
                  }
              });
可以的噢
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 2 楼 liuchaolin 的回复:
直接报错,js要么只能加载纯的js代码(不带<script></script>),可么只能加载纯的html标签
怎么会呢?从服务其发过来的只是字符串而已 ,浏览器才解析这些字符串 为js html
ayanamireizero 2014-07-14
  • 打赏
  • 举报
回复
如果要保留之前的用 $('#maindiv').append(response)
ayanamireizero 2014-07-14
  • 打赏
  • 举报
回复
不行返回带<script></script>的东东吧..... 你可以把3个JS都放在一个js文件下啊..
zhishiheng 2014-07-14
  • 打赏
  • 举报
回复
引用 1 楼 thinkingforever 的回复:
应该不存在,因为每次都 $('#maindiv').html(response)替换掉了啊;每次点击按钮后通过查看源文件找js文件看存在不存在
我开始也以为被替换掉了,可是审查元素看不到js代码
md5e 2014-07-14
  • 打赏
  • 举报
回复
直接报错,js要么只能加载纯的js代码(不带<script></script>),可么只能加载纯的html标签
加载更多回复(1)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧