【问题标题】:jquery .change function making script crash in IEjquery .change 函数使 IE 中的脚本崩溃
【发布时间】:2013-04-10 07:27:53
【问题描述】:

您好,我正在开发 jquery .change 函数。

javascript代码:

 $(document).ready(function () {

    $("#user").change(function()
    {
       var v=$('#user').val();
       var i=0;
       var id1="";
       while(v[i]!="|")
       {
          parseInt(v[i]);
          id1=(id1)+v[i];
          i++;
       }
      $("#dummy").attr("href", "create_graph/demo_graph.php?id="+id1);
      $("#dummy").attr("target",'content1');
  });

HTML 代码:

User Name:
<TD>
    <SELECT NAME='user' id='user'>
        <OPTION value=''></OPTION>{USER}
    </SELECT>
</TD>

它在 Mozilla 和 Chrome 中运行良好,但弹出框提示

"Stop running this script? 
A script on this page is causing your web browser to run slowly. If it continues to run, your          
computer might become unresponsive. "

即使我说“不”,它也会一次又一次地弹出这个弹出框

当我删除上面的 javascript 时,它不会弹出任何窗口...

请帮帮我。我会根据需要提供所需的信息。

【问题讨论】:

  • 我只是想确定一下。您是否关闭了 document.ready 功能?因为我只能看到一个右括号})。检查
  • var v=$('#user').val(); 当你循环通过时,你有多少价值?
  • @Jai..my 下拉列表的值可能大于 20。v 中的字符数范围为 5-10
  • @EdwinAlex..它已经关闭了..我刚刚在这里粘贴了我的部分代码
  • @nikhil 以及如何填写下拉列表(以确保它有效地生成始终正确的值,每个值都包含 |)?

标签: javascript jquery html internet-explorer onchange


【解决方案1】:

如果v 不包含|v[i]!="|" 将始终为真,因此它将是一个无限循环。

你只想得到|之前的部分,所以你可以使用split方法:

$("#user").change(function() {
    var id = $(this).val().split('|')[0];
    $("#dummy").attr("href", "create_graph/demo_graph.php?id="+id);
    $("#dummy").attr("target",'content1');
});

【讨论】:

  • @nikhil 你确定吗?我看到了一个值为空字符串的选项。但除此之外,您可以只使用 split 方法。
  • 这看起来是一个合适的答案。
【解决方案2】:

看起来像你的

while(v[i]!="|")

可能会永远运行。显式添加终止条件。

【讨论】:

  • v 总是包含带有“|”的字符串示例 1234|4
  • 我正在尝试让它在 jsFiddle 中运行,这是链接:jsfiddle.net/bhqcu
  • @SidCool 而是:jsfiddle.net/Wrmwu/1(HTML 代码未填充 OP 问题中的值)。
  • 啊,谢谢@SamuelCaillerie。对于给定的数据,它就像一个魅力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多