Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript,确定在函数中选择了哪个按钮,类似于iOS中的(id)sender?_Javascript_Ajax - Fatal编程技术网

Javascript,确定在函数中选择了哪个按钮,类似于iOS中的(id)sender?

Javascript,确定在函数中选择了哪个按钮,类似于iOS中的(id)sender?,javascript,ajax,Javascript,Ajax,我正在学习一个Javascript类,想知道是否有一种方法可以告诉我们在调用函数时选择了哪个按钮。我基本上有这样一种方法: function sendRequest() { var url = "http://classwebsite/bookmarks.php"; url += "?userid=crystal"; var transmission = document.getElementById("transmission").value; url += "

我正在学习一个Javascript类,想知道是否有一种方法可以告诉我们在调用函数时选择了哪个按钮。我基本上有这样一种方法:

function sendRequest()
{
    var url = "http://classwebsite/bookmarks.php";
    url += "?userid=crystal";
    var transmission = document.getElementById("transmission").value;
    url += "&response=" + transmission;
    var callback = {success:handleResponse, 
                    failure:handleFailure,
                    timeout:5000
                    };

    var transaction = YAHOO.util.Connect.asyncRequest("GET", url, callback, null);
}
按下按钮时会调用此方法。它基本上以适当的JSON、XML等格式返回教授的响应并显示它。我想添加一个“添加”功能,向表中添加新行。通过在上述方法中调用相同的URL并手动将其放入地址栏即可实现:

http://classwebsite/bookmarks.php?userid=crystal&action=add&name=yahoo&url=yahoo.com&desc=Yahoo+website
在这个场景中,如果我有另一个名为“Add”的按钮来添加表单中的字段,我会调用相同的sendRequest()方法,并相应地修改url吗?如果是,如果“列表”按钮和“添加”按钮都绑定到同一个事件处理程序,我如何知道按下了哪个按钮


或者,使用另一个方法处理addRequest()并仅从表单中添加字段,这是更好的设计吗?谢谢。

您应该能够修改javascript函数的参数以查看发件人

还有一个名为arguments的隐藏数组,可以让您查看函数可用的参数,以防您好奇

function sendRequest(sender, args) {
    //sender is your clicked button

    var url = "http://classwebsite/bookmarks.php";
    url += "?userid=crystal";
    var transmission = document.getElementById("transmission").value;
    url += "&response=" + transmission;
    var callback = {success:handleResponse, 
                    failure:handleFailure,
                    timeout:5000
                    };

    var transaction = YAHOO.util.Connect.asyncRequest("GET", url, callback, null);
}

如果按下按钮,则应将事件传递给函数。事件对象包含单击的
目标

function sendRequest(e) {
   var target;
   if(!e) {
      e = window.event;
   }

   // the button clicked can now be accessed as
   // we use the ternary because IE uses a different property
   target = e.target ? e.target : e.srcElement;
}

你会注意到其中的几个if语句。。。这是因为IE与标准有点不同。然而,我看到您正在为一些js使用Yahoo库。我想,如果您要使用此库的功能来绑定事件,它还将规范化传入回调的事件对象,这样您就不必手动创建xbrowser调节。

如果您确实像应该使用的那样使用Yahoo utils(即通过
Yahoo.util.event.addListener()
),则,然后您的按钮被
引用

见YUI文档

此外,请在使用URL参数之前对其进行正确编码

var transmission = document.getElementById("transmission").value,
    url = "http://classwebsite/bookmarks.php"
        + "?userid=crystal"
        + "&response=" + encodeURIComponent(transmission); // <- !!
var transmission=document.getElementById(“transmission”).value,
url=”http://classwebsite/bookmarks.php"
+“?userid=crystal”
+“&response=“+encodeURIComponent(传输)”//