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

Czemu innerHTML nie działa?

VPS Starter Arubacloud
0 głosów
681 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ź 605 wizyt
pytanie zadane 25 kwietnia 2017 w JavaScript przez Vorex444 Dyskutant (9,610 p.)
0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 26 czerwca 2019 w JavaScript przez fff Gaduła (3,950 p.)
0 głosów
3 odpowiedzi 458 wizyt
pytanie zadane 9 czerwca 2023 w JavaScript przez Piotrek2713 Mądrala (5,320 p.)

92,452 zapytań

141,262 odpowiedzi

319,079 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...