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

question-closed Moj pierwszy slider, problem bo nie działa :)

VPS Starter Arubacloud
+1 głos
264 wizyt
pytanie zadane 19 sierpnia 2016 w JavaScript przez Widemo Użytkownik (920 p.)
zamknięte 21 sierpnia 2016 przez Widemo

Witam mam taki oto kod i nie wiem co w nim nie działa, szukam juz jakis czas, ale nic nie znajduje. 

<!DOCTYPE html>
<html>

<head>
	<meta charset="UTF-8" />
	<link rel="stylesheet" href="style/style.css" />
	<link href="https://fonts.googleapis.com/css?family=Monda:400,700&subset=latin-ext" rel="stylesheet">
	<script src="js/jquery.js" type="text/javascript"></script>
	<script src="js/container_slider.js" type="text/javascript"></script>
</head>

<body>
	<div class="nav">
		<div class="nav_logo left">
			<div class="nav_logo_name left">
				Nazwa
			</div>
			<div class="nav_logo_subname left">
				SKANOWANIE LASEROWE
			</div>
		</div>
		<div class="nav_contact left">
			<div class="nav_contact_element left">
				<p>
					TEL : 507782027
				</p>
			</div>
			<div class="nav_contact_element left nav_contact_clickable">
				<p>
					Kontakt
				</p>
			</div>
		</div>
	</div>
	<div class="container">
		<div id="container_slider" class="container_slider">
			<div id="container_slider_arrow_left" class="container_slider_arrow left">
				&lt;
			</div>
			<div id="container_slider_arrow_right" class="container_slider_arrow right">
				&gt;
			</div>
		</div>
		<h1 style="text-align:center;">
				Skanowanie laserowe
			</h1>
		<div class="container_text">Najogólniej jest to inwentaryzacja wykonana metodą skanowania laserowego 3D poprzez rejestrację punktów pomiarowych (tzw. chmura punktów ) ze współrzędnymi w przestrzeni , które mogą być pokolorowane zdjęciami cyfrowymi. Uzyskane dane pomiarowe muszą
			być odpowiednio przefiltrowane i połączone wtedy uzyskamy realistyczne odwzorowanie mierzonego obiektu. Pomiary wykonane tą metodą cechuje bardzo duża dokładność (nawet do 2 mm ) i zdecydowanie krótszy czas ich wykonania <br><br>Zalety skaningu laserowego
			3D to , m.in.: największa możliwa dokładność , bardzo krótki czas wykonania pomiarów z możliwością skanowania w miejscach trudnodostępnych oraz w trakcie powadzonych robót , gdzie przerwanie robót nie jest wskazane , archiwizacja danych przy robotach
			polegających na ich zakryciu , np. betonowaniu , zasypaniu wykopów.
		</div>

	</div>
</body>

</html>
var ran = Math.floor(Math.random()*7) + 1;

var background = $(".container_slider").style.background;
var left = $("#container_slider_arrow_left");
var right = $("#container_slider_arrow_right");

left.onclick(function moveLeft(){
	background = "url(img/" + ran - 1 + ".jpg)";
})

 

komentarz zamknięcia: Sam rozwiązałem problem

1 odpowiedź

+1 głos
odpowiedź 19 sierpnia 2016 przez Magicone Nałogowiec (45,100 p.)

Problem leży w tym, że podczas deklaracji zmiennej background deklarujesz tak naprawdę kopię obecnego tła. Dzieje się tak, ponieważ przekazywany ciąg znaków jest typem prostym, co z kolei powoduje, że każde jego przekazanie jest wyłącznie kopią, a nie oryginałem. Doprowadza to do tego, że zmieniasz wyłącznie to, co przechowuje zmienna background, a nie styl danego elementu. Zamiast tego zadeklaruj konkretny element, do którego atrybutu style.background będziesz się odwoływał.

var sliderContainer = $('.container_slider');

left.onclick(function moveLeft() {
  sliderContainer.style.background = '…';
});

 

komentarz 19 sierpnia 2016 przez Widemo Użytkownik (920 p.)

zmieniłem i chrome zwraca błąd "Uncaught TypeError: left.onclick is not a function"

 

var ran = Math.floor(Math.random()*7) + 1;

var sliderContainer = $(".container_slider");
var left = $("#container_slider_arrow_left");
var right = $("#container_slider_arrow_right");

left.onclick(function moveLeft() {
  sliderContainer.style.background = 'url("../img/4.jpg")';
});

 

komentarz 19 sierpnia 2016 przez Magicone Nałogowiec (45,100 p.)
sprawdź, czy w ogóle left zawiera element
komentarz 19 sierpnia 2016 przez Widemo Użytkownik (920 p.)
chyba musi zawierac jezeli zostal przypisany
komentarz 19 sierpnia 2016 przez Magicone Nałogowiec (45,100 p.)
Otóż nie, bo skrypt jest wykonywany przed pojawieniem się elementów - przenieś ten z sliderem przed domknięciem tagu body, albo owiń kod w $(document).ready(/*funkcja*/);
komentarz 19 sierpnia 2016 przez Widemo Użytkownik (920 p.)
Dalej nic przenioslem na koniec dodalem tez ready i nic
komentarz 19 sierpnia 2016 przez efiku Szeryf (75,160 p.)
Przecież to nie ma onclick tylko click.. to obiekt jQuery. (left)

https://api.jquery.com/click/

Pierwszy przykład z brzegu to pokazuje.

Eh, używaj dokumentacji..
komentarz 20 sierpnia 2016 przez Magicone Nałogowiec (45,100 p.)
Nie do końca efik, owołując się do pojedynczego elementu jQuery nie dostajemy tablicy z wynikiem jQuery, tylko z konkretnym elementem DOM, przez co można na nim bezpośrednio operować; co nie zmienia faktu, że łączenie jednego z drugim nie ma sensu. Problem pewnie leży w tym, że nie potrafi schować kodu do zdarzenia załadowania elementu, albo ewentualnie coś w logice jeszcze leży, ale skoro chce mieć wszystko podane na tacy, to niech się ugryzie… :D

Podobne pytania

0 głosów
1 odpowiedź 263 wizyt
pytanie zadane 26 września 2016 w JavaScript przez agnieshax Nowicjusz (120 p.)
0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 28 stycznia 2017 w HTML i CSS przez Waldemar Początkujący (410 p.)
0 głosów
2 odpowiedzi 327 wizyt
pytanie zadane 27 kwietnia 2017 w C i C++ przez diablo4c Początkujący (250 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 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!

...