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

Czy window.addEventListener("click", function()) jest jednorazowy? Nazwa funkcji nie działa? Czyszczenie napisu

VPS Starter Arubacloud
+1 głos
497 wizyt
pytanie zadane 12 lipca 2021 w JavaScript przez Doge Gaduła (3,420 p.)

Witam, mam następujący kod:

window.addEventListener("click", function() {
	document.getElementById("welcome").style.fontSize = "90px";
	document.getElementById("welcome").style.color = "red";
	document.getElementById("welcome").style.backgroundColor = "blue";
	document.getElementById("welcome").style.padding = "0px 5px 35px 5px";
	setTimeout(function() 
	{
		document.getElementById("action").innerHTML = "";
	}, 5000);
});

1. Czy ta funkcja wywołuje się tylko po pierwszym kliknięciu? Ponieważ za drugim kliknięciem nie czyści już innerHTML.

2. Dlaczego EventListener nie działa mi z nazwą funkcji kiedy robię to tak:

window.addEventListener("click", welcome());

function welcome()
{
	document.getElementById("welcome").style.fontSize = "90px";
	document.getElementById("welcome").style.color = "red";
	document.getElementById("welcome").style.backgroundColor = "blue";
	document.getElementById("welcome").style.padding = "0px 5px 35px 5px";
	setTimeout(function() 
	{
		document.getElementById("action").innerHTML = "";
	}, 5000);
}

Dodam, że z onclickiem mi działało z nazwą funkcji. (window.onclick = welcome();)

3. Czy jest jakaś lepsza metoda na wyczyszczenie tego napisu? Widziałem, że w jQuery istnieje usuwanie spanów, lecz ciekawi mnie, czy w samym js istnieje coś takiego. Myślałem też o czyszczeniu innerHTML spana, lecz chyba nie jest to najlepsza metoda, ponieważ raczej trzeba dodatkowo usuwać właściwości jak backgroundColor, fontSize itp., ale się nie znam, więc prosiłbym o wypowiedź w tym temacie.

1
komentarz 12 lipca 2021 przez VBService Ekspert (255,440 p.)

Dla lepszej "czytelności" kodu, możesz ten zapis

. . .

const div1 = document.createElement("div"), div2 = document.createElement("div"), div3 = document.createElement("div"), div4 = document.createElement("div");

. . .

zapisać tak

. . .

const div1 = document.createElement("div"), 
      div2 = document.createElement("div"), 
      div3 = document.createElement("div"), 
      div4 = document.createElement("div");

. . .

 

2 odpowiedzi

+2 głosów
odpowiedź 12 lipca 2021 przez VBService Ekspert (255,440 p.)
wybrane 13 lipca 2021 przez Doge
 
Najlepsza

Twój zapis

window.addEventListener("click", function() {
    document.getElementById("welcome").style.fontSize = "90px";
    document.getElementById("welcome").style.color = "red";
    document.getElementById("welcome").style.backgroundColor = "blue";
    document.getElementById("welcome").style.padding = "0px 5px 35px 5px";
    setTimeout(function() 
    {
        document.getElementById("action").innerHTML = "";
    }, 5000);
});

"za drugim razem" nie działa, ponieważ "czyścisz" całą zawartość div-a id=action poleceniem

    setTimeout(function() 
    {
        document.getElementById("action").innerHTML = "";
    }, 5000);

wtedy przy kolejnym kliknięciu

document.getElementById("welcome") ...

zwraca błąd, bo div id=action nie zawiera

<span id="welcome" class="welcome">Welcome in clicker game</span>

 

reasumując div id=action, przed kliknięciem

<div id="action" class="action">
    <span id="welcome" class="welcome">Welcome in clicker game</span>
</div>

po kliknięciu i wykonaniu: innerHTML = ""

<div id="action" class="action"></div>

 

Można to "naprawić" np. dodając warunek, który sprawdzi czy element span id=welcome "istnieje" w div id=action (tak naprawdę, czy istniej w ogóle w DOM strony)

window.addEventListener("click", function() {
  if (document.getElementById("welcome")) {
    document.getElementById("welcome").style.fontSize = "90px";
    document.getElementById("welcome").style.color = "red";
    document.getElementById("welcome").style.backgroundColor = "blue";
    document.getElementById("welcome").style.padding = "0px 5px 35px 5px";
    setTimeout(function() 
    {
        document.getElementById("action").innerHTML = "";
    }, 5000);
  } else {
    // tu inny kod gdy innerHTML = ""
    // wykasuje <span id="welcome" ...> 
  }
});

 

druga sprawa, ten zapis

. . .

document.getElementById("welcome").style.fontSize = "90px";
document.getElementById("welcome").style.color = "red";
document.getElementById("welcome").style.backgroundColor = "blue";
document.getElementById("welcome").style.padding = "0px 5px 35px 5px";

. . .

możesz zapisać w takiej postaci (welcome-get-bigger - nazwa klasy przykładowa)

dodaj do css-a

.welcome-get-bigger
{
    font-size: 90px;
    color: red;
    background-color: blue;
    padding: 0px 5px 35px 5px;
}

a w js-ie, tak

window.addEventListener("click", function() {
    document.getElementById("welcome").classList.add("welcome-get-bigger");
    setTimeout(function() 
    {
        document.getElementById("action").innerHTML = "";
    }, 5000);
});

 

ponieważ raczej trzeba dodatkowo usuwać właściwości jak backgroundColor, fontSize itp., 

wtedy też całą klasę usuwasz jedną linijką kodu wink

. . .

document.getElementById("welcome").classList.remove("welcome-get-bigger");

. . .

 

możesz też włączać i wyłączać klasy ("pstryczek"  wink)

<button id="switch" class="switch">Toggle</button>
.switch {
  cursor: pointer;
  width: 200px;
  height: 40px;
  font-size: 10px;
  color: initial;
  background-color: initial;  
  transition: all 1s; 
}
.get-bigger {
  font-size: 20px;
  color: limegreen;
  background-color: black;
}
// document.getElementById("switch")
document.querySelector("#switch").addEventListener("click", ({target}) => {
  target.classList.toggle("get-bigger");
})

inny wariant

<button id="switch" class="switch">Nie mam klasy get-bigger</button>
.switch {
  cursor: pointer;
  width: 300px;
  height: 40px;
  font-size: 10px;
  color: initial;
  background-color: initial;  
  transition: all 1s; 
}
.get-bigger {
  font-size: 20px;
  color: limegreen;
  background-color: black;
}
document.querySelector("#switch").addEventListener("click", ({target}) => {
  if (target.classList.contains("get-bigger")) {
    target.classList.remove("get-bigger");
    target.textContent = "Nie mam klasy get-bigger";
  } else {
    target.classList.add("get-bigger");
    target.textContent = "Mam klasę get-bigger";
  }
})

 

Funkcja strzałkowa ]  [ classList() - CSS i Javascript ]

komentarz 15 lipca 2021 przez Doge Gaduła (3,420 p.)

W jaki sposób wtedy mogę zedytować wartość elementu w tablicy? Ponieważ na developer mozilla najpierw napisane jest, że:

" Poniższy kod tworzy tablicę o długości 25, a następnie przypisuje wartości pierwszym trzem elementom:

rodzajeMuzyki = new Array(25)
rodzajeMuzyki[0] = "R&B"
rodzajeMuzyki[1] = "Blues"
rodzajeMuzyki[2] = "Jazz"

"

A następnie , że:

"

[0] Element tylko-do-odczytu, zawierający ostatnio porównane znaki.

"

I nie wiem w końcu czy to jest poprawny zapis czy w jaki sposób mogę wpływać na wartości elementów tablicy.

1
komentarz 15 lipca 2021 przez VBService Ekspert (255,440 p.)
edycja 15 lipca 2021 przez VBService

Ten przykład co podałeś 

[0] Element tylko-do-odczytu, zawierający ostatnio porównane znaki.

tyczy się: Tworzenie tablicy z wyników wyrażenia regularnego

 

a "zwykłe" tablice ...

// deklarujesz pustą tablicę
const relict_arr = []; // lub const relict_arr = new Array();

relict_arr[0] = 10; // dodanie elementu o index = 0 i nadanie wartości
console.log(relict_arr[0]);

relict_arr[1] = 20;
console.log(relict_arr[1]);

relict_arr[0] = 50; // zmiana wartości elementu index = 0
console.log(relict_arr[0]);

console.info(relict_arr);

 

komentarz 15 lipca 2021 przez Doge Gaduła (3,420 p.)
A czy poprawne jest wpływanie na wartość w tablicy zadeklarowanej przy pomocy const? Ponieważ jak sama nazwa const mówi, jest to stała, ale jednak w tablicy da się zmieniać jej wartość.
1
komentarz 16 lipca 2021 przez VBService Ekspert (255,440 p.)

Const != immutable

It’s very important to understand const. It doesn’t imply immutability.

A variable is like a pointer to a value (it’s a pointer for objects, it’s an assigned value for primitives). const prevents the variable to be assigned to another value. We could say it makes the pointer immutable, but it doesn’t make the value immutable too!

 

const arr = [1, 2, 3]
arr.push(4) // this is totally fine
arr = ['foo', 'bar'] // TypeError: Assignment to constant variable.

 

So beware that arrays and objects assigned to const variables can be mutated. However numbers, booleans and strings are immutable per se, so they cannot be mutated. Not because you are using const but just because they are intrinsically immutable.

w sumie to polecam lekturę całego kontentu tej strony: Use `const` and make your JavaScript code better

komentarz 16 lipca 2021 przez Doge Gaduła (3,420 p.)

Czy wie Pan jak naprawić switch z tego tematu? Ponieważ za każdym razem wykonuje mi się tylko i wyłącznie instrukcja default. Dokładniej wszystko opisałem pod powyższym linkiem.

+3 głosów
odpowiedź 12 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)

1. Czy ta funkcja wywołuje się tylko po pierwszym kliknięciu? Ponieważ za drugim kliknięciem nie czyści już innerHTML.

Domyślnie event listener wykonuje się przy każdym wystąpieniu eventu - chyba, że go odepniesz lub użyjesz opcji once. Pokaż kod HTML, żeby można było przetestować dlaczego uruchamia się raz. Sprawdź też, czy konsola przeglądarki nie rzuca jakichś błędów.

window.addEventListener("click", welcome());

+

window.onclick = welcome();

Te kody wywołują funkcję welcome od razu i zwróconą z funkcji wartość przypisują do listenera/handlera - ten zapis jest ok pod warunkiem, że funkcja zwraca inną funkcję, bo wtedy zwrócona funkcja jest podpinana pod listener/handler. W Twoim przypadku natomiast nie podpinane jest nic, bo funkcja welcome nic nie zwraca (więc w domyśle zwraca undefined).

Czy jest jakaś lepsza metoda na wyczyszczenie tego napisu?

Ta metoda jest ok, albo użycie textContent, albo innerText. Co do jQuery czy każdej innej biblioteki - wszystko co jest możliwe w bibliotece jest też możliwe w natywnym języku, bo biblioteki są budowane w oparciu o język, więc korzystają z niego (i jego API). Biblioteki są często o tyle wygodniejsze, że daną funkcjonalność opakowują w jedną funkcję i działa to w różnych przeglądarkach (co w przypadku samodzielnych rozwiązań bywa czasem pracochłonne).

Myślałem też o czyszczeniu innerHTML spana, lecz chyba nie jest to najlepsza metoda, ponieważ raczej trzeba dodatkowo usuwać właściwości jak backgroundColor, fontSize itp., ale się nie znam, więc prosiłbym o wypowiedź w tym temacie.

Nie, czyszczenie innerHTML - czy ogólnie wnętrza elementu - nie czyści mu styli. Style są nałożone albo w formie inline, za pomocą atrybutu style, albo pochodzą z CSS'a. Jeśli chcesz "zresetować" całkiem element, to możesz go usunąć z DOM i stworzyć od nowa (przy założeniu, że tworzony był dynamiczne z jakimiś atrybutami). Jeśli element nie był tworzony dynamicznie, to możesz po załadowaniu strony go sobie sklonować (albo odczytać wszystkie atrybuty) i trzymać jako szablon do odtworzenia stanu pierwotnego, gdy zechcesz zresetować ten element po jego modyfikacjach.

komentarz 12 lipca 2021 przez Doge Gaduła (3,420 p.)
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="UTF-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
	<link rel="stylesheet" href="style.css">
	<script type="text/javascript" src="script.js"></script>
</head>
<body>
	<div id="container" class="container">
		<div id="resources" class="resources">
			<div id="coins" class="coins">
				<span id="coin" class="coin">0 coins</span>
			</div>
			<div id="per_clicked" class="coins">
				<span id="per_click" class="coin">0 per click</span>
			</div>
		</div>
		<div id="main" class="main">
			<div id="clicker" class="clicker">
				<button class="btn" onclick="luck_function()"><img id="doge" class="doge" src="img/doge.png" /></button>
			</div>
			<div id="action" class="action">
			<span id="welcome" class="welcome">Welcome in clicker game</span>
			</div>
			<div id="shop" class="bottom_tiles" onclick="shop()">
				<img class="bottom_imgs" src="img/shopping_cart.png" />
			</div>
			<div id="eq" class="bottom_tiles" onclick="eq()">
				<img class="bottom_imgs" src="img/backpack.png" />
			</div>
		</div>
	</div>
</body>
</html>
body
{
	background-image: url("img/body_background.jpg");
	user-select: none;
}
.container
{
	width: 1200px;
	margin-left: auto;
	margin-right: auto;
	min-height: 500px;
	background-color: red;
}
.resources
{
	background: linear-gradient(45deg, #e66465, #9198e5);
	text-align: center;
	font-size: 40px;
	height: 200px;
	width: 1198px;
	padding: 1px;
}
.main
{
	background-color: purple;
	width: 1198px;
	height: 300px;
	padding: 1px;
}
.action
{
	text-align: center;
	float: right;
	width: 960px;
	height: 202px;
	background-color: green;
	margin: 10px 10px 0px 0px;
}
.coins
{
	height: 100px;
	width: 500px;
	border: 3px solid black;
	margin: 40px 10px 0px 60px;
	float: left;
}
.coin::before
{
	content: "";
	background-image:url(img/coin.png);
	background-size: 100% 100%;
	display: inline-block;
	
	/*rozmiar ::before background*/
	height: 50px;
	width: 50px;
	
	position: relative;
	top: 15px;
}
.coin2::before
{
	content: "";
	background-image:url(img/coin.png);
	background-size: 100% 100%;
	display: inline-block;
	
	/*rozmiar ::before background*/
	height: 25px;
	width: 25px;
	
	position: relative;
	top: 5px;
}
#per_clicked
{
	font-size: 20px;
}
.clicker
{
	width: 200px;
	height: 200px;
	background-color: purple;
	margin: 10px 10px 10px 10px;
	transition: 0.1s;
	float: left;
}
.clicker:active
{
	width: 210px;
	height: 210px;
	margin: 5px;
}
.doge
{
	width: 200px;
	height: 200px;
	transition: 0.1s;
}
.doge:active
{
	width: 210px;
	height: 210px;
}
.clicker img
{
	display: block;
}
.btn
{
	border: none;
	padding: 0px;
	cursor: pointer;
}
.inaction
{
	width: 450px;
	height: 71px;
	margin: 17px 10px 0px 15px;
	float: left;
	background-color: red;
	text-align: center;
	font-size: 20px;
	
	display: flex;
	align-items: center;
	justify-content: center;
	transition: 0.3s;
}
.inaction:hover
{
	width: 460px;
	height: 81px;
	margin: 7px 0px 0px 15px;
	float: left;
	background-color: red;
	text-align: center;
	font-size: 20px;
	
	display: flex;
	align-items: center;
	justify-content: center;
	
	cursor: pointer;
}
.bottom_tiles
{
	height: 50px;
	width: 50px;
	background-color: yellow;
	cursor: pointer;
	margin: 10px 10px 10px 10px;
	transition: 0.3s;
	clear: both;
	display: inline-block;
}
.bottom_tiles:hover
{
	width: 70px;
	height: 70px;
	margin: 5px 5px 5px 5px;
}
.bottom_imgs
{
	display: block;
	transition: 0.3s;
	width: 50px;
	height: 50px;
}
.bottom_imgs:hover
{
	width: 70px;
	height: 70px;
}
.relict
{
	width: 25px;
	height: 25px;
	margin: 0px 5px 0px 0px;
}
.welcome
{
	font-size: 60px;
	transition: 2s;
}
var coins = 99999;
var coins_per_click = 1, upgrade_clicked_cost = 10;
var coins_per_second = 0, upgrade_per_second_cost = 100;
var luck = 0, upgrade_luck_cost = 1000;
var relict1 = 0, relict2 = 0, relict3 = 0, relict4 = 0;
var relict1_cost = 10, relict2_cost = 20, relict3_cost = 30, relict4_cost = 40;
const div1 = document.createElement("div"), div2 = document.createElement("div"), div3 = document.createElement("div"), div4 = document.createElement("div");
window.addEventListener("click", function() {
	document.getElementById("welcome").style.fontSize = "90px";
	document.getElementById("welcome").style.color = "red";
	document.getElementById("welcome").style.backgroundColor = "blue";
	document.getElementById("welcome").style.padding = "0px 5px 35px 5px";
	setTimeout(function() 
	{
		document.getElementById("action").innerHTML = "";
	}, 5000);
});
window.onload = loading;
function loading()
{
	coins_update();
	per_clicked_update();
	luck_function_per_second();
}
function coins_update()
{
	document.getElementById("coins").innerHTML = '<span id="coin" class="coin">'+coins.toLocaleString('pl-PL')+' coins</span>';
}
function per_clicked_update()
{
	document.getElementById("per_clicked").innerHTML = '<span id="per_click" class="coin2">'+coins_per_click+' per click | Upgrade cost: '+upgrade_clicked_cost+'</span> <br /> <span id="per_second" class="coin2">'+coins_per_second+' per second | Upgrade cost:'+upgrade_per_second_cost+'</span> <br /> <span id="luck" class="coin2">Luck: '+luck+'% for double coins | Upgrade cost: '+upgrade_luck_cost+' coins</span>';
}
function shop()
{
	div1.setAttribute("id", "action1");
	div1.setAttribute("class", "inaction");
	div1.setAttribute("onclick", "upgrade_clicked();");
	div1.innerHTML = '<img src="img/click.png" width="40" height="40" /><span style="cursor: pointer;">Upgrade per click</span>';
	document.getElementById("action").appendChild(div1);
	
	div2.setAttribute("id", "action2");
	div2.setAttribute("class", "inaction");
	div2.setAttribute("onclick", "upgrade_per_second();");
	div2.innerHTML = '<img src="img/stopwatch.png" width="40" height="40" /><span style="cursor: pointer;">Upgrade per second</span>';
	document.getElementById("action").appendChild(div2);
	
	div3.setAttribute("id", "action3");
	div3.setAttribute("class", "inaction");
	div3.setAttribute("onclick", "upgrade_luck();");
	div3.innerHTML = '<img src="img/clover.png" width="40" height="40" /><span style="cursor: pointer;">Upgrade luck</span>';
	document.getElementById("action").appendChild(div3);
	
	div4.setAttribute("id", "action4");
	div4.setAttribute("class", "inaction");
	div4.setAttribute("onclick", "relict_shop();");
	div4.innerHTML = '<img src="img/relict_shop.png" width="40" height="40" /><span style="cursor: pointer;">Relict shop</span>';
	document.getElementById("action").appendChild(div4);
}
function relict_shop()
{
	div1.setAttribute("onclick", "buy_relict(relict1_cost, 1);");
	div1.innerHTML = '<img src="img/relict1_1.png" class="relict" /><span style="cursor: pointer;">Buy ('+relict1_cost+' coins)</span>';
	document.getElementById("action").appendChild(div1);
	
	div2.setAttribute("onclick", "buy_relict(relict2_cost, 2);");
	div2.innerHTML = '<img src="img/relict2_1.png" class="relict" /><span style="cursor: pointer;">Buy ('+relict2_cost+' coins)</span>';
	document.getElementById("action").appendChild(div2);

	div3.setAttribute("onclick", "buy_relict(relict3_cost, 3);");
	div3.innerHTML = '<img src="img/relict3_1.png" class="relict" /><span style="cursor: pointer;">Buy ('+relict3_cost+' coins)</span>';
	document.getElementById("action").appendChild(div3);

	div4.setAttribute("onclick", "buy_relict(relict4_cost, 4);");
	div4.innerHTML = '<img src="img/relict4_1.png" class="relict" /><span style="cursor: pointer;">Buy ('+relict4_cost+' coins)</span>';
	document.getElementById("action").appendChild(div4);
}
function upgrade_clicked()
{
	if(coins >= upgrade_clicked_cost)
	{
		coins_per_click++;
		coins -= upgrade_clicked_cost;
		upgrade_clicked_cost *= 2;
		coins_update();
		per_clicked_update();
	}
	else
	{
		document.getElementById("action1").innerHTML = 'You don\'t have enough coins';
		setTimeout(function() {document.getElementById("action1").innerHTML = '<span onclick="upgrade_clicked()">Upgrade per click</span>';}, 2000)
	}
}
function upgrade_per_second()
{
	if(coins >= upgrade_per_second_cost)
	{
		coins_per_second++;
		coins -= upgrade_per_second_cost;
		upgrade_per_second_cost *= 2;
		coins_update();
		per_clicked_update();
	}
	else
	{
		document.getElementById("action2").innerHTML = 'You don\'t have enough coins';
		setTimeout(function() {document.getElementById("action2").innerHTML = '<span onclick="upgrade_per_second()">Upgrade per second</span>';}, 2000)
	}
}
function upgrade_luck()
{
	if(luck == 100)
	{
		document.getElementById("action3").innerHTML = 'You have upgraded luck to the maximum level';
		setTimeout(function() {document.getElementById("action3").innerHTML = '<span onclick="upgrade_luck()">Upgrade luck</span>';}, 2000)
	}
	else
	{
		if(coins >= upgrade_luck_cost)
		{
			luck++;
			coins -= upgrade_luck_cost;
			upgrade_luck_cost *= 2;
			coins_update();
			per_clicked_update();
		}
		else
		{
			document.getElementById("action3").innerHTML = 'You don\'t have enough coins';
			setTimeout(function() {document.getElementById("action3").innerHTML = '<span onclick="upgrade_luck()">Upgrade luck</span>';}, 2000)
		}
	}
}
function luck_function()
{
	var lucky_number = Math.floor(Math.random()*100)+1;
	if(lucky_number<=luck) //trafiono w luck
	{
		coins += coins_per_click*2;
		relict_bonuses(4);
	}
	else
	{
		coins += coins_per_click;
	}
	relict_bonuses(1);
}
function luck_function_per_second()
{
	var lucky_number = Math.floor(Math.random()*100)+1;
	if(lucky_number<=luck)
	{
		coins += coins_per_second*2;
	}
	else
	{
		coins += coins_per_second;
	}
	relict_bonuses(2);
	setTimeout("luck_function_per_second()", 1000);
}
function buy_relict(cost, relict)
{
	if(coins >= cost)
	{
		coins -= cost;
		coins_update();
		switch(relict)
		{
			case 1:
				relict1_cost *= 2;
				relict1++;
				coins_per_click++;
				break;
			case 2:
				relict2_cost *= 2;
				relict2++;
				coins_per_second++;
				break;
			case 3:
				relict3_cost *= 2;
				relict3++;
				break;
			case 4:
				relict4_cost *= 2;
				relict4++;
				luck++;
				break;
		}
		per_clicked_update();
		relict_shop();
	}
	else
	{
		switch(relict)
		{
			case 1:
				document.getElementById("action1").innerHTML = 'You don\'t have enough coins';
				setTimeout(function() {document.getElementById("action1").innerHTML = '<img src="img/relict1_1.png" class="relict" /><span onclick="buy_relict(relict1_cost, 1)" style="cursor: pointer;">Buy ('+relict1_cost+' coins)</span>';}, 2000)
				break;
			case 2:
				document.getElementById("action2").innerHTML = 'You don\'t have enough coins';
				setTimeout(function() {document.getElementById("action2").innerHTML = '<img src="img/relict2_1.png" class="relict" /><span onclick="buy_relict(relict2_cost, 2)" style="cursor: pointer;">Buy ('+relict2_cost+' coins)</span>';}, 2000)
				break;
			case 3:
				document.getElementById("action3").innerHTML = 'You don\'t have enough coins';
				setTimeout(function() {document.getElementById("action3").innerHTML = '<img src="img/relict3_1.png" class="relict" /><span onclick="buy_relict(relict3_cost, 3)" style="cursor: pointer;">Buy ('+relict3_cost+' coins)</span>';}, 2000)
				break;
			case 4:
				document.getElementById("action4").innerHTML = 'You don\'t have enough coins';
				setTimeout(function() {document.getElementById("action4").innerHTML = '<img src="img/relict4_1.png" class="relict" /><span onclick="buy_relict(relict4_cost, 4)" style="cursor: pointer;">Buy ('+relict4_cost+' coins)</span>';}, 2000)
				break;
		}
	}
}
function eq()
{
	document.getElementById("action1").innerHTML = '<img src="img/relict1_1.png" class="relict" /> x'+relict1+' (+'+relict1+' per click)';
	document.getElementById("action2").innerHTML = '<img src="img/relict2_1.png" class="relict" /> x'+relict2+' (+'+relict2+' per second)';
	document.getElementById("action3").innerHTML = '<img src="img/relict3_1.png" class="relict" /> x'+relict3+' (+'+relict3+' coins if lucky)';
	document.getElementById("action4").innerHTML = '<img src="img/relict4_1.png" class="relict" /> x'+relict4+' (+'+relict4+'% luck)';
}
function relict_bonuses(relict)
{
	switch(relict)
	{
		case 1:
			coins += relict1;
			break;
		case 2:
			coins += relict2;
			break;
		case 3:
			coins += relict3;
			break;
	}
	coins_update();
}

Podobne pytania

0 głosów
2 odpowiedzi 690 wizyt
0 głosów
0 odpowiedzi 1,009 wizyt

92,845 zapytań

141,786 odpowiedzi

320,859 komentarzy

62,178 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...