2009-11-03 7 views
0

J'ai une liste d'un href et je voudrais en créer une liste déroulante.Générer une liste déroulante

Comment puis-je accomplir cela sans utiliser jQuery?

Je suis nouveau javascript ...

Répondre

5
var select = document.createElement("select"); 
for (var i=0; i<hrefs.length; i++) { 
    var link = hrefs[i]; 
    var option = document.createElement("option"); 
    option.value = hrefs[i]; 
    option.innerHTML = i + ": " + hrefs[i]; // this is the label 
    select.appendChild(option); 
} 
document.body.appendChild(select); 

Je ne suis pas sûr si l'étiquette est juste; cela dépend de ce que vous voulez dire par une liste de hrefs et de ce que vous voulez faire avec l'étiquette. Je suppose que vous avez un tableau de liens comme ["http://google.com", ...].

3

Si vous avez JavaScript 1.6, vous pouvez faire quelque chose comme ceci:

var hrefs = ['http://stackoverflow.com', 'http://example.com'], 
    select = document.createElement("select"), 
    str = hrefs.map(function(l){ 
    return '<option>'+l+'</option>' 
    }); 
select.innerHTML = str.join(''); 
document.body.appendChild(select); 

Vous pouvez imiter .map avec

if (!Array.prototype.map) 
{ 
    Array.prototype.map = function(fun /*, thisp*/) 
    { 
    var len = this.length >>> 0; 
    if (typeof fun != "function") 
     throw new TypeError(); 

    var res = new Array(len); 
    var thisp = arguments[1]; 
    for (var i = 0; i < len; i++) 
    { 
     if (i in this) 
     res[i] = fun.call(thisp, this[i], i, this); 
    } 

    return res; 
    }; 
} 

(via MDC - https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/map)

+0

BTW, vous pouvez modifier 'return ''' pour répondre à vos besoins. Son idée générale ... – NilColor

Questions connexes