Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  javascriptiga elemendi kopeerimine ja selle childide id-de muutmine märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
shakedown
HV vaatleja
shakedown

liitunud: 26.01.2005




sõnum 07.05.2008 15:56:24 javascriptiga elemendi kopeerimine ja selle childide id-de muutmine vasta tsitaadiga

on olemas midagi sellist:

<tr id="row1">
<td>
<element id="rc_1">
<element id="ra_1">
</td>
</tr>

Kpeerin javascriptiga antud elemendi (row1) ning lisan ta tabelisse. Samal ajal muudan ära id, ehk uus rida saab idks: "row2". Sellega saan hakkama. Nüüd aga oleks soov ka elementide id-d vastavalt ära muuta, aga kuidagi ei oska..
Vaja siis, et uus rida näeks välja selline:

<tr id="row2">
<td>
<element id="rc_2">
<element id="ra_2">
</td>
</tr>

_________________
Kuidas müüa 74GB WD Raptorit?

Mina ka ei tea.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 07.05.2008 16:03:54 vasta tsitaadiga

Püüad kõigepealt id järgi kinni rea ja seejärel selle seest id järgi elemendid ning siis muudad elementide id ärad ning kõige lõpuks lisad rea tabelisse.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 44
tagasi üles
vaata kasutaja infot saada privaatsõnum
shakedown
HV vaatleja
shakedown

liitunud: 26.01.2005




sõnum 07.05.2008 16:07:24 vasta tsitaadiga

ma kujutan ette jah, aga kuidas ma selle rea seest neid lemente id järgi otsin? document.getElementById otsib ju ka neid, mis esimese rea sees on?

Antud hetkel kood:

var a = 0;
function addRow () {
a = a+1;
var ext_row = document.getElementById('row0');
var new_row = ext_row.cloneNode(true);
new_row.setAttribute('id', 'row'+a);
document.getElementById('rowContainer').appendChild(new_row);
}

_________________
Kuidas müüa 74GB WD Raptorit?

Mina ka ei tea.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 07.05.2008 17:17:39 vasta tsitaadiga

kangesti tahaks öelda - osta endal mingi javascripti framework .. icon_smile.gif näiteks jQuery, seal on näiteks võimalik CSS selectoritega praktiliselt midaiganes selectida.. aga kui sa tahad ise käed tavotiseks teha, siis ei oska aidata, olen ainult framework'idega majandanud..
_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
sharkey
HV vaatleja

liitunud: 26.11.2005




sõnum 08.05.2008 00:57:46 vasta tsitaadiga

Pole mõnda aega javascripti näppinud, aga midagi sellist ehk:
javascript:
  1. new_row.getElementsByTagName('element')[0].setAttribute('id', 'rc_'+a);
  2. new_row.getElementsByTagName('element')[1].setAttribute('id', 'rc_'+a);
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 15.05.2008 00:33:27 vasta tsitaadiga

Puhtalt sportlikust huvist kirjutasin lahenduse:

html:
  1. <tr id="row-1">
  2.   <td>
  3.     <b id="b-1">Some</b>
  4.     <i id="i-1">example</i>
  5.     <q id="q-1">elements</q>
  6.   </td>
  7. </tr>
  8. </table>
  9.  
  10. <p><button onclick="addRow();">Lisa rida</button></p>


javascript:
  1. function incrementIds(element) {
  2.     // When ID is present, increment it
  3.     if (element.id) {
  4.         var found = element.id.match(/([0-9]+)$/);
  5.         if (found) {
  6.             var nr = parseInt(found[1], 10);
  7.             element.id = element.id.replace(/[0-9]+$/, nr + 1);
  8.         }
  9.     }
  10.  
  11.     // Recursively increment all child elements
  12.     if (element.hasChildNodes()) {
  13.         var children = element.childNodes;
  14.         for (var i = 0; i < children.length; i++) {
  15.             if (children[i].nodeType == Node.ELEMENT_NODE) {
  16.                 incrementIds(children[i]);
  17.             }
  18.         }
  19.     }
  20. }
  21.  
  22. function addRow() {
  23.     // find last row in table
  24.     var table = document.getElementsByTagName("table")[0];
  25.     var rows = table.getElementsByTagName("tr");
  26.     var last_row = rows[rows.length-1];
  27.  
  28.     // clone it
  29.     var new_row = last_row.cloneNode(true);
  30.  
  31.     // increment ID attributes in it
  32.     incrementIds(new_row);
  33.  
  34.     // add as last row
  35.     table.appendChild(new_row);
  36. }


Ega palju lihtsamalt seda teha ei saagi.

Iseasi on see, miks sul üldse on tarvis nii palju ID-sid? Võimalik, et tõesti on tarvis, kuid mulle tundub, et saaksid hakkama ka ilma.
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  javascriptiga elemendi kopeerimine ja selle childide id-de muutmine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.