Kysyn onko mahdollista liittää arrayhyn varia oheisella tavalla ja mikäli ei niin mitä suosittelisitte? push()ia? Ohessa nopeasti kännissä ja läpällä kirjoitetut rivit.
var variaabeli1 = getElementById(yksi).value; var variaabeli2 = getElementById(kaksi).value; var variaabeli3 = getElementById(kolme).value; var karttaObj = { variaabeli1 : '1', variaabeli2 : '2', variaabeli3 : '3' };
Pitäisi onnistua, toisin sulta puuttuu lainausmerkit getElementById("yksi") kohdasta.
Edit.
Se onnistuu näin:
var muuttuja = "Moi"; var objekti = {}; objekti[muuttuja] = 1;
Toimii näemmä noin! Nyt pitäisi saada vielä workkaamaan replace functionin kanssa. Tuleeko replace käskyyn tunkea tuon muuttujan nimi objekti[] sulkeiden sisään vai riittääkö pelkästään [muuttuja]?
EDIT:
Ja kiitos vielä! Pää on ihan solmussa ollut niin unohtuvat kaikki järjenkäytön alkeet!
Kerroppa vähän tarkemmin, mitä yrität tehdä. En ainakaan ite ottanut tuosta selkoa.
Käytännössä siis inputin kautta lapsi pystyy kirjoittamaan sanan, jolla korvataan tarinasta tietyt sanat. Replace() funktiolla ajattelin gi:n avulla suorittaa. Koska sanat ovat käyttäjän syöttämiä lataan ne arrayhyn joissa on valmiiksi vastinpari.
Objektin käyttäminen ei edistä tuota ratkaisua millään tavalla. Siistimpää on merkitä korvattavat tekstit suoraan inputteihin, jolloin korvaukseen riittää yksinkertainen silmukka.
<div id="tarina"> {s1} meni {s2}{s3}, koska {s2} oli loppunut ja {s1} tarvitsi sitä. </div> <ul> <li><input class="korvaus" name="{s1}" value="Mimmi"> <li><input class="korvaus" name="{s2}" value="maito"> <li><input class="korvaus" name="{s3}" value="kauppaan"> <li><button id="korvaus">Korvaa</button> </ul> <script type="text/javascript"> var tarina = document.querySelector("#tarina") var korvaus_input = document.querySelectorAll("input.korvaus") var korvaus_button = document.querySelector("#korvaus") tarina.dataset.alkuteksti = tarina.textContent function korvaus() { var s = tarina.dataset.alkuteksti var korvaus = document.querySelectorAll("input.korvaus") for (var i = 0; i < korvaus.length; ++i) { var re = new RegExp(korvaus[i].name, "g") s = s.replace(re, korvaus[i].value) } tarina.textContent = s } korvaus() korvaus_button.addEventListener("click", korvaus) </script>
Voi myös tehdä tekstin niin, että jokainen muokattava kohta olisi omassa tagissaan contentEditable-attribuutin kera, ja yhden kohdan muokkaaminen muuttaisi kaikkia muitakin samanlaisia.
<div id="tarina"> Kun <kbd>noutti</kbd> koodaa <kbd>kännissä</kbd>, hän <kbd data-alkuteksti="menee-1">menee</kbd> Putkaan. Kun <kbd>noutti</kbd> riehuu <kbd>kännissä</kbd>, hän <kbd data-alkuteksti="menee-2">menee</kbd> putkaan. </div> <script type="text/javascript"> var arr = document.querySelectorAll("#tarina kbd") var obj = {} function muokkaus() { var s = this.dataset.alkuteksti for (var i = 0; i < obj[s].length; ++i) { obj[s][i].textContent = this.textContent } } for (var i = 0; i < arr.length; ++i) { var s = arr[i].textContent if (!arr[i].dataset.alkuteksti) arr[i].dataset.alkuteksti = s obj[s] = obj[s] || [] obj[s].push(arr[i]) arr[i].addEventListener("input", muokkaus) arr[i].contentEditable = true } </script>
Kiitoksia vastauksista! Tutkailen huomenna meininkiä. Eiköhön noilla pääse jo jyvälle!
Aihe on jo aika vanha, joten et voi enää vastata siihen.