1

動的に生成された "ol" :

document.getElementsByTagName('ol');
    for (i = 0; i < len; i++){
          var newLi = document.createElement("li");
          var link = document.createElement('a');
          link.href = "#"; 
          link.innerHTML = (results.rows.item(i).location + "-" + results.rows.item(i).datte);
          newLi.appendChild(link);
          olnew[0].appendChild(newLi);

クリックされた「li」を見つける必要があります。jquery ライブラリをこの関数にのみ使用します。JavaScript で同じ機能を探していますが、現時点ではどのようにコーディングすればよいかわかりません。thx var ss; ss=$("#idfromOl"); ss.click(クリックヘチョ);

}

function clickhecho()
{
    var $all_lis = $('li');

    $all_lis.on('click', function() {
        var index = $all_lis.index(this);
    });
}
4

4 に答える 4

1

これを試して:

function createfunc(i) {
    return function() { alert(i); };
}
for (i = 0; i < len; i++){
    var newLi = document.createElement("li");
    var link = document.createElement('a');
    link.href = "#"; 
    link.innerHTML ="test"
    newLi.appendChild(link);
    // just add onclick event; use createFunc to create function closure (otherwise 'i' would always be the last 'i'
    newLi.onclick = createfunc(i);

    olnew[0].appendChild(newLi);
}
于 2013-10-18T11:30:49.960 に答える
0

間違っているかもしれませんが、これはあなたが探しているものですか?

var elements = document.getElementsByTagName('li');

for (var i = 0; i < elements.length; i++) {
    elements[i].addEventListener('click', function (e) {
        $("#clickedLi").text(e.srcElement.id);
    });
}

addEventListenerすべてのli要素に呼び出されるイベントを追加します。

li要素内には、クリックclickされたものを含むパラメーターとして指定されたイベントがあります。idli

デモ: http://jsfiddle.net/DUzMc/1/

于 2013-10-18T11:24:26.537 に答える
0

最も簡単な方法は、リストの生成中にイベントを含めることです。

document.getElementsByTagName('ol');
for (i = 0; i < len; i++){
      var newLi = document.createElement("li");
      var link = document.createElement('a');
      link.href = "#"; 
      link.innerHTML = (results.rows.item(i).location + "-" + results.rows.item(i).datte);

      // Add this
      link.onclick = function(index) { return function() {
        // do something with index variable
      }}(i);

      newLi.appendChild(link);
      olnew[0].appendChild(newLi);

i の代わりにローカル変数インデックスを使用することに注意してください。これは、項目をクリックしたときに i の値が異なる (len に等しい) ためです。

于 2013-10-18T11:31:30.730 に答える
0

スクリプトの最初の部分は不完全なので、動的リストを生成する短いスクリプトを作成しました。

基本的に、あなたはaddEventListener()を探していました:

var elements = 10;
ol = document.createElement('ol');
for(i = 1; i <= elements; i++){
    var li = document.createElement('li');
    var a = document.createElement('a');
    a.setAttribute('href', '#');
    a.text = 'Link ' + i;
    li.appendChild(a);
    ol.appendChild(li);

    a.addEventListener("click", who, false); // THIS IS THE IMPORTANT PART
}

document.getElementsByTagName('body')[0].appendChild(ol);


function who(e){
    var myTarget = e.target;
    myTarget.text = "clicked!";
}
于 2013-10-18T11:36:53.063 に答える