Toon posts:

[JS] Selectbox volgorde veranderen van items mbv Firefox

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste Tweakers,

Ik heb een selectbox waarin een aantal items staan. De volgorde kan ik veranderen mbv
buttons, in IE! Firefox daarin tegen heeft een probleem met: el.add(opt, index)

Does somebody knows why?

Dit is de code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function moveUp(el) {
    var index = el.selectedIndex;

    if ((index < 1) || (index == -1)) return;

    var tmp = el.item(index - 1);

    //var opt = document.createElement("OPTION");
    var opt = new Option('tmp');
    opt.text = tmp.text;
    opt.value = tmp.value;
    opt.attrib = tmp.attrib;
    el.remove(index-1);
    el.add(opt, index);//Firefox can't handle this one
    el.selectedIndex = index - 1;

    var str = "";
    for (var i=0; i<el.length; i++) {
        str += el.item(i).value;
        str += ",";
    }
    document.f.NewOrder.value = str;
}

  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
misschien de functie Add() ook eens posten?

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 05-05 16:47
(da's een javascript functie... met andere woorden, gewoon een methode van van option)

Everyday's an endless stream, of cigarettes and magazines...


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

party42 schreef op dinsdag 05 juli 2005 @ 13:21:
(da's een javascript functie... met andere woorden, gewoon een methode van van option)
IE-only ja.hmmz, toch DOM1; een method van het select-element

Maar DOM is veel krachtiger en dit werkt wel:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script type="text/javascript">

function moveUp(sel)
{
    var index = sel.selectedIndex;
    if (index < 1) return;

    sel.insertBefore(sel.removeChild(sel.options[index]), sel.options[index-1]);
    sel.selectedIndex = index - 1;
}

</script>
<select id="foo" size=8>
    <option>option 1</option>
    <option>option 2</option>
    <option>option 3</option>
    <option>option 4</option>
    <option>option 5</option>
    <option>option 6</option>
    <option>option 7</option>
    <option>option 8</option>
</select>
<input type="button" value="moveUp" onclick="moveUp(document.getElementById('foo'))">

[ Voor 5% gewijzigd door crisp op 05-07-2005 13:32 ]

Intentionally left blank


Verwijderd

Topicstarter
K dan, thanks crisp! I didn't know!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

Het lijkt overigens toch op een DOM level 1 bug in Gecko...

Intentionally left blank


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

Wait a minute; de DOM ref zegt dit:
The HTMLSelectElement object has the following methods:

add(element, before)
This method has no return value.
The element parameter is a HTMLElement object.
The before parameter is a HTMLElement object.
Het 2e argument is dus geen index maar een referentie-element. Microsoft's implementatie is dus fout :)

Intentionally left blank

Pagina: 1