Toon posts:

[JS] toewijzen name-attribute voor nieuw element in IE

Pagina: 1
Acties:

Verwijderd

Topicstarter
In een form clone ik een element met:
JavaScript:
1
newCategory = oldCategory.cloneNode( false );

vervolgens pas ik de naam van het nieuwe element aan met:
JavaScript:
1
newCategory.name = newCatName; (var wordt uiteraard een waarde gegeven)


Vervolgens voeg het nieuwe element toe aan het document.

Dit werkt prima in FireFox,de DOM inspector laat een nieuw element zien met de juiste naam.
Maar, in IE (6) wordt het element gecloned, maar de name niet veranderd. IE heeft dan dus 2 elementen met dezelfde naam.

Ik heb geprobeerd de name te veranderen met:
JavaScript:
1
newCategory.setAttribute( "name", newCatName );

maar ook dat werkt niet.

Is er een manier om in IE de naam van het geclone-de element te veranderen? bvd.

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:47

Creepy

Tactical Espionage Splatterer

"dat werkt niet". Joh. Wat gebeurt er dan precies? Krijg je een foutmeldinge? Al in de javascript logger/debugger gekeken?

Anyway, je hebt over HTML, CSS, JavaScript, Flash en Director topics *12-05* heen gekeken. Move -> W&G

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:40

crisp

Devver

Pixelated

dit werkt toch prima:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type="text/javascript">

function clone(el)
{
    var newel = el.cloneNode(false);
    newel.name = 'nieuwenaam';
    newel.value = 'what name?';
    newel.onclick = function() { alert(this.name); }
    document.body.appendChild(newel);
}

</script>
<body>
<input type="button" name="naam" value="klik" onclick="clone(this)">
</body>

Intentionally left blank


Verwijderd

Topicstarter
De JS debugger van IE geeft aan dat hij van het nieuwe select-element niets kan met de options list. Dit komt omdat er 2 selects zijn met dezelfde naam, en hij de options list niet eenduidig kan vaststellen.

En het feit dat de selects dezelfde naam hebben, komt omdat ik vooralsnog niet in staat ben in IE de naam van het nieuwe element aan te passen, dat is wat er niet werkt.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:40

crisp

Devver

Pixelated

Mmmz, als je nu meteen had gezegd dat het om een select ging...

Met een select lijkt het inderdaad fout te gaan; het kan niets anders zijn dan een DOM bug in IE. Ik denk dat de enige manier om dit te omzeilen is een geheel nieuw select-element aan te maken mbv createElement (aangezien je de childNodes toch niet meekopieerd lijkt me dat niet zo'n groot probleem).

Intentionally left blank


Verwijderd

Topicstarter
Heb het nu omgeschreven naar een situatie met createElement.

JavaScript:
1
2
var newCategory = document.createElement( 'select' );
newCategory.setAttribute( 'name' , nextName );


Als ik vervolgens JS vraag hoeveel elementen er met de naam nextName zijn, krijg ik 0 te zien:

JavaScript:
1
2
3
alert( newCategory.name );     // geeft de juiste naam, de waarde van nextName 
selects = document.getElementsByName( newCategory.name );
alert( selects.length );            // geeft 0


Ik denk dat ik het ga omschrijven naar een situatie die id's gebruikt, kijken of dat werkt.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 20:40

crisp

Devver

Pixelated

dat is dan nog ernstiger dan ik dacht; blijkbaar heeft IE dus helemaal geen setter voor het name-attribuut van een select vanuit DOM :/
Dan lijkt me de laatste mogelijkheid het gebruik van innerHTML / insertAdjacentHTML

* crisp schopt IE "sterf kreng!"

[ Voor 13% gewijzigd door crisp op 21-07-2005 13:11 ]

Intentionally left blank

Pagina: 1