[JS/IE] Verwijderen style attribuut

Pagina: 1
Acties:

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Ik wil graag een style attribute kunnen verwijderen, maar om een of andere reden werkt style.removeAttribute niet meer in IE.

Ik heb daarvoor een testje gemaakt die dat bevestigt:
HTML:
1
2
3
4
5
6
7
<div style="border-left: 1px solid black;" id="test">test</div>
<script>
var e = document.getElementById('test');
alert(e.style.getAttribute('borderLeft'));
e.style.removeAttribute('borderLeft');
alert(e.style.getAttribute('borderLeft'));
</script>


e.style.borderLeft = null; geeft een error, bij mijn weten was removeAttribute de enige manier. Ik heb geen enkel idee waarom het niet meer werkt. Heeft iemand een andere methode?

[ Voor 10% gewijzigd door Michali op 10-03-2006 15:34 ]

Noushka's Magnificent Dream | Unity


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:00

crisp

Devver

Pixelated

removeAttribute is voor HTML-attributes, niet voor style-attributes (je voorbeeld zal in geen enkele browser werken). Je moet gewoon de style-property leegmaken:
JavaScript:
1
e.style.borderLeft = '';

Intentionally left blank


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Dat verwijdert hem niet. Nu wordt de waarde 'medium none'. Ik weet dat het IE only is. Daar hoort het weldegelijk te werken, dat heeft het altijd gedaan. Bovendien geeft die methode voor veel attributen een invalid value error.


Daarnaast nog een vraagje, niet echt een nieuw topic waardig. Ik wil graag weten of een bepaald element enkele attributen heeft gedefineerd. In FF is dat simpel. Als element.attributes.length de waarde 0 heeft, dan zijn er geen attributen. In IE echter, was te verwachten, heeft deze altijd de waarde van het totale aantal mogelijke attributen voor dat element. Nu moet ik daar dus door de complete lijst met attributen gaan loopen om te controleren of een of een attribuut is gespecificeerd (middels attribute.specified). Is er ook een andere manier om daar in IE achter te komen?

[ Voor 51% gewijzigd door Michali op 10-03-2006 16:24 ]

Noushka's Magnificent Dream | Unity


Verwijderd

Het is inderdaad onmogelijk om direkt de gespecificeerde attributen te achterhalen. Het meest ideale lijkt mij om de betreffende elementen uit te breiden met een funkie 'attributes.specified.lenght()'.

[ Voor 5% gewijzigd door Verwijderd op 12-04-2006 12:03 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Dat zou idd een goede oplossing zijn, als je in IE standaard DOM classes zou kunnen uitbreiden, wat helaas niet kan.

Noushka's Magnificent Dream | Unity


Verwijderd

Michali schreef op woensdag 12 april 2006 @ 13:53:
Dat zou idd een goede oplossing zijn, als je in IE standaard DOM classes zou kunnen uitbreiden, wat helaas niet kan.
En een grote lus die alle dokumentelementen afloopt en uitbreidt? Of zal dat teveel load genereren?

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Ik heb het nu zo opgelost:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function hasAttributes(node)
{
    if ( Navigator.IS_IE )
    {
        for ( var i = 0; i < node.attributes.length; i++ )
        {
            if ( node.attributes[i].specified ) return true;
        }
        return false;
    }
    else
    {
        return node.attributes.length > 0;
    }
}

Noushka's Magnificent Dream | Unity

Pagina: 1