• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czemu innerHTML nie działa?

Object Storage Arubacloud
0 głosów
694 wizyt
pytanie zadane 18 stycznia 2019 w JavaScript przez matilogias Obywatel (1,550 p.)

Napisałem kod który powinien zmieniać tekst na inny lecz nie działa jego późniejsza podmiana

var allow = true;	//zmienna przechowująca informację czy jest teraz edytowany jakiś element
    function edit(e){
        if(allow){	//jeśli jakiś element jest wykonywany to kod się nie wykonuje
            allow = false;
            var tekst = e.innerHTML;
            e.id += " editing";	//dodaje id do edytowanego elementu
            e.innerHTML = '<div id="editor"><input type="text" id="texttoedit" style="color:black;" value="'+tekst+'"><br><button onClick="edit_ready(this)">gotowe</button></div>';	//wyświetla pole edycji i guzik
        }
    }
    function edit_ready(e){
        allow = true;
        var tekst = document.getElementById("texttoedit").value;	//zapisywanie do zmiennej nowego tekstu
        document.getElementById("editing").innerHTML = tekst;	//ustawienie nowego tekstu (nie działa)
        document.getElementById("editing").id.replace("editing","");	//usunięcie id (też nie działa)
    }
    
<div onclick="edit(this)">tekst</div>

 

komentarz 18 stycznia 2019 przez Tomek Sochacki Ekspert (227,510 p.)
a patrzyles w ogole co masz w zmiennych? Pierwszy krok to debugowanie kodu w takich sytuacjach.
komentarz 18 stycznia 2019 przez matilogias Obywatel (1,550 p.)
tak patrzyłem i z tego co widziałem wszystko było dobrze
5
komentarz 18 stycznia 2019 przez Tomek Sochacki Ekspert (227,510 p.)

nie, nie patrzyłeś :) tylko tak napisaleś, żebym się odczepił :)

document.getElementById("editing").innerHTML = tekst;

a w DOM nie masz elementu o takim ID, bo wcześniej nadajesz elementowi ID = " editing" <- ze spacją. Gdybyś chociażby zrobił console.log na tym elemencie to by wyszło null :)

A to tylko jedna z rzeczy, do poprawy jest więcej ale wysil się troszkę sam i podebuguj, a nie pisz że debugujesz :) (ehh... uwielbiam to - ja nic nie zrobiłem... a potem w git history wsio widać i adnotations ładnie pokazują kto co i jak :)

komentarz 19 stycznia 2019 przez matilogias Obywatel (1,550 p.)

Dzięki z podpowiedź udało mi się to naprawić lecz mam kolejny problem gdy zatwierdzę zmianę i przydzielę do diva onclick z "edi()" (funkcja pomocnicza. Powinno być "edit()") to mi się automatycznie uruchamia. Czy jest coś co mogło by raz pominąć wykonywanie tego lub coś w tym stylu?

function edi(){
			console.log("error");
		}
    function edit(e){
    	if (!document.getElementById("editing")) {
    		e.removeAttribute("onclick");
            var tekst = e.innerHTML;

            (e.id == "") ? e.id = "editing" : e.id += " editing";

            e.innerHTML = '<div id="editor"><input type="text" id="texttoedit" style="color:black;" value="'+tekst+'"><br><button onClick="edit_ready()">gotowe</button></div>';
        }
    }
    function edit_ready(){
        var tekst = document.getElementById("texttoedit").value;
        var e = document.getElementById("editing");
        
		e.setAttribute("onclick", "edi()");  //<<<<<<
        e.innerHTML = tekst;
        (e.id.replace("editing","") == "") ? e.removeAttribute("id") : e.id = e.id.replace("editing","") = "";
    }

 

komentarz 19 stycznia 2019 przez matilogias Obywatel (1,550 p.)

@Tomek Sochacki, Już nie ważne przesiadłem się na jquery i sprawdza się o wiele lepiej. A i  mógł byś dać jakiś komentarz żebym mógł dać ci najlepszą odpowiedź.

2
komentarz 19 stycznia 2019 przez ScriptyChris Mędrzec (190,190 p.)

przesiadłem się na jquery i sprawdza się o wiele lepiej

Jeśli udało Ci się z pomocą biblioteki, a nadal nie wiesz co było problemem, to na dłuższą metę taka nauka ma mało sensu.

1
komentarz 19 stycznia 2019 przez Tomek Sochacki Ekspert (227,510 p.)
Panie, sobota wieczór, sprint się kończy trza Jirę pozamykać :)

A tak serio to kolega JSHolic ma rację... spróbuj dojść co było nie tak a pomoże Ci to w nauce
komentarz 20 stycznia 2019 przez matilogias Obywatel (1,550 p.)

@JSHolic, Znalazłem już problem i wszystko działało lecz chciałem zmienić z id na class'y ponieważ dopiero się dopatrzyłem że może być tylko jedno id i było by za mało uniwersalne. A jQuery dużo łatwiej się programuje ma dużo więcej funkcji

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 644 wizyt
pytanie zadane 25 kwietnia 2017 w JavaScript przez Vorex444 Dyskutant (9,610 p.)
0 głosów
1 odpowiedź 207 wizyt
pytanie zadane 26 czerwca 2019 w JavaScript przez fff Gaduła (3,950 p.)
0 głosów
3 odpowiedzi 464 wizyt
pytanie zadane 9 czerwca 2023 w JavaScript przez Piotrek2713 Mądrala (5,340 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...