【问题标题】:Call two function in one onchange = not working一次调用两个函数 onchange = 不工作
【发布时间】:2012-02-10 11:21:32
【问题描述】:

我一直在寻找如何在 onchange 中放置多个函数,我发现了类似的内容,例如:onchange = "function1(); function2();"我的问题是我遵循了示例的内容,但只有函数 1 工作,函数 2 不工作。 如果我不这样做 onchange = "function2(); function1();",只有函数 2 工作,函数 1 不工作,一样。

有什么想法吗? 谢谢。

函数,我用的是Ajax:

function1(test)
{
    var kode = test.value;
    if (!kode) return;
    xmlhttp.open('get', '../template/get_name-opr.php?kode='+kode, true);
    xmlhttp.onreadystatechange = function() {
        if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200))
        {
            //alert(kode);
             document.getElementById("code").innerHTML = xmlhttp.responseText;
        }
        return false;
    }
    xmlhttp.send(null);
}

function2(test)
{
    var kode = test.value;
    if (!kode) return;
    xmlhttp**1**.open('get', '../template/get_name2-opr.php?kode='+kode, true);
    xmlhttp**1**.onreadystatechange = function() {
        if ((xmlhttp**1**.readyState == 4) && (xmlhttp**1**.status == 200))
        {
            //alert(kode);
             document.getElementById("code2").innerHTML = xmlhttp**1**.responseText;
        }
        return false;
    }
    xmlhttp**1**.send(null);
}

为了解决我的问题,我创建了两个不同的 xmlhttp。 (xmlhttp 和 xmlhttp1)。

【问题讨论】:

  • 您是否在任何函数上看到任何 JavaScript 错误?
  • @ShashankKadne Hummm.. 我不知道它是否调用错误,我在萤火虫中看到它说(函数的结果)for function1“localhost/template/get_name-opr.php?kode=f Aborted(所有字体为红色) , 表示没有响应,没有结果),function2“localhost/template/get_name-opr.php?kode=f”(这是得到响应的,确实有结果)。就是这样!我很困惑(=,=)“a。
  • 查看错误控制台是否有错误(工具>错误控制台)
  • 没有任何错误,只是在控制台中得到了我上面提到的两个结果。

标签: function onchange


【解决方案1】:

通过我提供的链接,您管理 xmlhttprequest 对象的方式似乎有问题,正确管理它们的实例,在您的情况下,因为您使用相同的 xmlhttprequest 处理两个同时的 AJAX 请求,只有其中一个得到服务。要么等待其中一个得到服务,要么创建两个 xmlhttprequest 实例。

语句xmlhttp.readystate = function() {...} 显然替换了xmlhttprequest 对象的readystate 属性,所以在你的第二个函数上,它被替换了(因为你对它们都使用了xmlhttprequest)。这就是为什么您会看到这种有趣的行为。

【讨论】:

  • 它有效,纳夫尼思先生。我创建了两个 xmlhttp(xmlhttp 和 xmlhttp1)来将它放在每个函数上。这就是它的工作原理。谢谢 Navneeth 先生。
【解决方案2】:

在function1()结束时调用function2()。

onchange = "function1()"

function1(){
...
function1 body;
...
function2()
}

【讨论】:

  • 你能发布你的函数吗,我尝试了一个简单的 alert() 示例,它有两个函数,它可以工作。
  • @Boris 函数,我用的是Ajax。看我的帖子。
  • 尝试调试你的函数,我相信你的一个函数有问题。
【解决方案3】:

将两个函数调用封装在一起并调用该函数!

function myFirstFunction() {
   //body
}

function mySecondFunction() {
   //body
}

//Call this guy.
function myWrappedFunction() {
   myFirstFunction();
   mySecondFunction();
}

【讨论】:

  • 我不知道你的浏览器发生了什么,它应该按照你提到的方式工作。试试这个方法,如果不行的话……你懂我的意思。
  • 我已经按照你的代码,没有任何反应~(T___T)~ 两个函数都不起作用想知道
  • 尝试将警报作为每个函数定义的第一行,这将确保函数确实被调用。现在你应该在你的服务器中寻找一些有趣的行为。
  • 还可以尝试将alert(xmlhttp.readyState) 放入onreadystatechange 回调的函数定义中并查看状态代码。
  • 您是否为每个请求创建一个新的 xmlhttprequest?
猜你喜欢
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 2019-11-07
  • 1970-01-01
相关资源
最近更新 更多