• 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
92 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 (169,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 (169,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 (77,500 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 (169,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ź 101 wizyt
0 głosów
0 odpowiedzi 71 wizyt
0 głosów
2 odpowiedzi 1,189 wizyt
pytanie zadane 21 marca 2017 w JavaScript, jQuery, AJAX przez Seabool Nowicjusz (150 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

62,241 zapytań

108,353 odpowiedzi

226,163 komentarzy

34,616 pasjonatów

Przeglądających: 171
Pasjonatów: 27 Gości: 144

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.

...