0

PHP経由でロードされるページがあります。ページ内の要素の 1 つは<li>、onclick イベントを持つ です。例<li onclick="dynamiccall('1');">blah</li>。要素をクリックすると、ajax 呼び出しが発行され、html 出力がページに挿入されます。タグは次のようになります<li onclick="getubilling('1');">blah</li>

生成された要素を onclick 関数 getubilling('1'); でクリックすると、ajax 呼び出しが php スクリプトに送信されます。getubilling の 2 番目の関数のクエリ パラメータは 1 と表示されますが、ajax 呼び出しに渡すと [object mouseevent] と表示されます。なぜこうなった?

dynamiccall() 関数は、ページに含まれる ajax.js ファイルで次のように定義されています。

function dynamiccall(uid){
    var xmlHttp = getXMLHttp();
        xmlHttp.onreadystatechange = function()
      {
        if(xmlHttp.readyState == 4)
        {
          HandleResponse10(xmlHttp.responseText);
          console.log(uid);
          var holder = uid;
          document.getElementById('orgcinfo').innerHTML = '<ul id="b_action_lst2"><li onclick="getuprofile('+holder+')" name="uprofile">Account Settings</li><li onclick="getubilling('+holder+')" name="billing">Billing</li><li onclick="getuchpass('+holder+')" name="chpass">Change Password</li><li onclick="getuadduser('+holder+')" name="adduser">Add User</li></ul>';

           var ullist = document.getElementById('b_action_lst2');
          var links = ullist.getElementsByTagName('li');

          for(var i=0;i<links.length;i++){
            var link = links[i];
            if(link.getAttribute('name')=="uprofile"){
                link.onclick = getuprofile;
            }
            if(link.getAttribute('name')=="chpass"){
                link.onclick = getuchpass;
            }
             if(link.getAttribute('name')=="billing"){
                link.onclick = getubilling;
            }
          }
          //dothis();
        }
      }
      xmlHttp.open("GET", "ajax.php?&p=anotherreq&uid="+uid+"&n="+Math.random(), true); 
      xmlHttp.send(null);
    } 


function getubilling(uid){
var xmlHttp = getXMLHttp();
    xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      HandleResponse10(xmlHttp.responseText);
      console.log(uid);
      var holder = uid;
      document.getElementById('orgcinfo').innerHTML = '<ul id="b_action_lst2"><li onclick="getuprofile('+holder+')" name="uprofile">Account Settings</li><li onclick="getubilling('+holder+')" name="billing">Billing</li><li onclick="getuchpass('+holder+')" name="chpass">Change Password</li><li onclick="getuadduser('+holder+')" name="adduser">Add User</li></ul>';

       var ullist = document.getElementById('b_action_lst2');
      var links = ullist.getElementsByTagName('li');

      for(var i=0;i<links.length;i++){
        var link = links[i];
        if(link.getAttribute('name')=="uprofile"){
            link.onclick = getuprofile;
        }
        if(link.getAttribute('name')=="chpass"){
            link.onclick = getuchpass;
        }
         if(link.getAttribute('name')=="billing"){
            link.onclick = getubilling;
        }
      }
      //dothis();
    }
  }
  xmlHttp.open("GET", "ajax.php?&p=gubilling&uid="+uid+"&n="+Math.random(), true); 
  xmlHttp.send(null);
} 

http://www.domain.com/ajax.php?&p=gubilling&uid=1&n=2212.32313にリクエストが発行されます

問題は、結果の UID 変数がブラウザーでレンダリングされると、リテラル値 1 ではなく [object mouseevent] になることです。

私はこのに従って いましたが、私が見ることができる唯一の違いは、私の例が動的要素を dynamicEvent 関数に渡すことを提供していないことです。

私は何が欠けていますか?アドバイスをいただければ幸いです。

4

2 に答える 2

0

これは、onclick ハンドラー (イベント オブジェクト) に渡されるデフォルトのパラメーターになると思います。

インラインではなく、最初に addEventListener を使用してみませんか?

于 2013-11-03T00:15:03.510 に答える
0

これはどのように行われますか:

dynamiccall('uniqueid');

uniqueid の値を知っていますか? それはどこから得ますか?この場合、発生したイベントの値を取得しています。私の提案は、タグを次のように変更することです。

<li onclick="dynamiccall(this);" uniqueid="1">blah</li> 

次に、動的呼び出しを次のように設定できます。

function getubilling(elem) {
    var uid = $(elem).attr('uniqueid');
...
于 2013-11-03T00:17:56.467 に答える