2012-02-08 24 views
2

ラベルと異なる値を持つselect要素がある場合、どのようにすべてのラベルを対応するvaluesに置き換えることができますか?selectのすべてのオプションラベルを値に置き換えるにはどうすればよいですか?

第2に、フレームワークを使用せずに値をアルファベット順にソートするにはどうすればよいですか?

入力:

<select name="options" > 
    <option value="apple">Fruit</option> 
    <option value="rye">Bread</option> 
    <option value="beer">Beverage</option> 
</select> 

出力:getElementsByTagName()innerHTMLを使用して、

<select name="options" > 
    <option value="apple">apple</option> 
    <option value="beer">beer</option> 
    <option value="rye">rye</option> 
</select> 

答えて

3

確か:

var allOptions = document.getElementsByTagName("option"); 
for (var i=0; i<allOptions.length; i++) { 
    allOptions[i].innerHTML = allOptions[i].value; 
} 

Here it is in action.

へ参照、アルファベット順にオプションを並べ替える:あなたがそれらが同一になりたい場合はJavascript to sort contents of select element

+0

はあなたに感謝!とても簡潔!値をアルファベット順に並べ替えるにはどうすればよいですか? –

+0

@SteveBrown申し訳ありませんが、私はソートに関する部分を逃しました。それらをソートするソリューションについては、リンクされた質問を参照してください。 –

0

、あなたは単にvalue属性を省略することができます - optionタグ内の文字列は、値としてサーバーに送信されます。ここをクリックしてください:http://www.w3schools.com/tags/att_option_value.asp

+0

ここではjQueryを使用していませんが、オプションタグに値を指定しないとjQueryに問題が生じることがあります。また、value属性を使用して値を指定するのはベストプラクティスではありませんか? –

+0

'value'属性はDTD Strictを使用していてもオプションであるため、属性を省略するのが標準的な方法です。 jQueryに関して、私はこの種のものに何も触れていません。しかし、あなたがhttp://bugs.jquery.com/ticket/5452に記載されているバグを参照している場合は、影響を受けるIEのみを持つように見え、jQuery 1.4.4では修正されているようです。 – Artyom

+0

もクロムに影響します。 "value属性の代わりにテキストコンテンツを使用してjQueryに頼ることはできませんが、フィルタでは機能しますが、必ずしもDOMの選択には使えません。 .net/wNmLF/2/" –

0

あなたはこれを行うことができます:あなたはあなたの選択、および削除したり、選択するために、任意の要素を追加するために注文する機能でこれをカプセル化することができます

<select name="options" > 
    <option value="apple">Fruit</option> 
    <option value="rye">Bread</option> 
    <option value="beer">Beverage</option> 
</select> 

<script> 

    var options = document.getElementsByName("options")[0].querySelectorAll("option"); 
    Array.prototype.slice.call(options).map(function (option) { 
     option.innerHTML = option.value; 
    }); 
</script> 
+0

'querySelectorAll'は私が知る限り標準JSで利用できる関数ではありません。また、 'option.innerHTML = option.value'が必要です。最後にアルファベット順にソートされません。 –

+0

私はあなたに-1を働かせないコードを投稿し、問題を解決しません。あなたが戻ってきてそれを修正すれば+1を与えるでしょう。 –

+0

あなたの質問を間違えて解決しました。ごめんなさい。 – caleb

0

機能はこのようなものになるだろう:

function sortSelect(selElem) { 
    var tmpAry = new Array(); 
    for (var i=0;i<selElem.options.length;i++) { 
     tmpAry[i] = new Array(); 
     tmpAry[i][0] = selElem.options[i].text; 
     tmpAry[i][1] = selElem.options[i].value; 
    } 
    tmpAry.sort(); 
    while (selElem.options.length > 0) { 
     selElem.options[0] = null; 
    } 
    for (var i=0;i<tmpAry.length;i++) { 
     var op = new Option(tmpAry[i][0], tmpAry[i][1]); 
     selElem.options[i] = op; 
    } 
    return; 
} 

そして、あなたが好きそれを呼び出す必要があります。

sortSelect(document.getElementsByName("options")); 
関連する問題