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

Czemu innerHTML nie działa?

0 głosów
112 wizyt
pytanie zadane 18 stycznia w JavaScript, jQuery, AJAX przez matilogias Użytkownik (960 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 przez Tomek Sochacki Mędrzec (186,690 p.)
a patrzyles w ogole co masz w zmiennych? Pierwszy krok to debugowanie kodu w takich sytuacjach.
komentarz 18 stycznia przez matilogias Użytkownik (960 p.)
tak patrzyłem i z tego co widziałem wszystko było dobrze
5
komentarz 18 stycznia przez Tomek Sochacki Mędrzec (186,690 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 przez matilogias Użytkownik (960 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 przez matilogias Użytkownik (960 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 przez JSHolic Szeryf (79,520 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 przez Tomek Sochacki Mędrzec (186,690 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 przez matilogias Użytkownik (960 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ź 106 wizyt
0 głosów
1 odpowiedź 86 wizyt
0 głosów
1 odpowiedź 43 wizyt
pytanie zadane 2 dni temu w JavaScript, jQuery, AJAX przez Borys Początkujący (270 p.)
Porady nie od parady
Nie wiesz jak poprawnie zredagować pytanie lub pragniesz poznać którąś z funkcji forum? Odwiedź podstronę Pomoc (FAQ) dostępną w menu pod ikoną apteczki.FAQ

65,648 zapytań

112,274 odpowiedzi

236,903 komentarzy

46,641 pasjonatów

Przeglądających: 243
Pasjonatów: 9 Gości: 234

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...