2013-07-02 45 views
1

http://jsfiddle.net/fkling/nXkDp/js按鈕上的id排序

嗨,即時嘗試將此腳本連接到按鈕,但它不工作。我不知道爲什麼。

var sortID = function() 
{ 
var toSort = document.getElementById('list').children; 
toSort = Array.prototype.slice.call(toSort, 0); 

toSort.sort(function(a, b) { 
    var aord = +a.id.split('-')[1]; 
    var bord = +b.id.split('-')[1]; 
    // two elements never have the same ID hence this is sufficient: 
    return (aord > bord) ? 1 : -1; 
}); 

var parent = document.getElementById('list'); 
parent.innerHTML = ""; 

for(var i = 0, l = toSort.length; i < l; i++) { 
    parent.appendChild(toSort[i]);} 
}; 
+3

按鈕在哪裏? – mishik

+0

可能是因爲您的HTML缺少按鈕 – SomeShinyObject

+3

問題「如何將此代碼掛接到按鈕?」或者「爲什麼這種排序功能不適用於我的清單?」編輯:我只是看着小提琴,顯然這種工作。您是否告訴我們您可以編寫這樣的排序函數,但是您不能執行按鈕單擊事件處理程序? – nnnnnn

回答

1

創建一個按鈕和onload事件,它分配的onclick處理您sortID()功能:

jsFiddle Demo

HTML:

<input type="button" id="mybutton" value="Sort" /> 

的Javascript:

var sortID = function() { 

    var toSort = document.getElementById('list').children; 
    toSort = Array.prototype.slice.call(toSort, 0); 

    toSort.sort(function (a, b) { 
     var aord = +a.id.split('-')[1]; 
     var bord = +b.id.split('-')[1]; 
     // two elements never have the same ID hence this is sufficient: 
     return (aord > bord) ? 1 : -1; 
    }); 

    var parent = document.getElementById('list'); 
    parent.innerHTML = ""; 

    for (var i = 0, l = toSort.length; i < l; i++) { 
     parent.appendChild(toSort[i]); 
    } 

}; 

window.onload = function(){ 
    document.getElementById("mybutton").onclick = sortID; 
} 
0

如下您可以指定一個事件處理程序的按鈕:

document.getElementById('sortButtonIdHere').addEventListener('click', function() {  
    // your code here  
}, false); 

演示:http://jsfiddle.net/nXkDp/31/

如果你關心支持IE8及以上,你可以使用:

document.getElementById('sortButtonIdHere').onclick = function() {  
    // your code here  
}; 

或者您可以添加一個測試,確定是否定義了.addEventListener(),如果不是,則使用attachEvent()作爲explained at MDN

0

試試這個:

HTML:

<div id="list"> 
    <div id="categorie5.1-4">4</div> 
    <div id="categorie5.1-3">3</div> 
    <div id="categorie5.1-5">5</div> 
    <div id="categorie5.1-1">1</div> 
    <div id="categorie5.1-2">2</div> 
</div> 
<input type="button" onclick="keyMe()" value="hook"> 

的Javascript:

function keyMe(){ 
    var toSort = document.getElementById('list').children; 
    toSort = Array.prototype.slice.call(toSort, 0); 

    toSort.sort(function(a, b) { 
     var aord = +a.id.split('-')[1]; 
     var bord = +b.id.split('-')[1]; 
     // two elements never have the same ID hence this is sufficient: 
     return (aord > bord) ? 1 : -1; 
    }); 

    var parent = document.getElementById('list'); 
    parent.innerHTML = ""; 

    for(var i = 0, l = toSort.length; i < l; i++) { 
     parent.appendChild(toSort[i]); 
    } 
} 

我希望它會幫助你

這裏是鏈接:jsfiddle.net/dp6Vr/