Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]zapis dwóch zdarzeń
c4ash
post
Post #1





Grupa: Zarejestrowani
Postów: 73
Pomógł: 9
Dołączył: 14.01.2010

Ostrzeżenie: (0%)
-----


Witajcie!

W koncu zabrałem sie za JS. Tak wiec prosze nie krzyczcie, staram sie czegos sensownego nauczyc.
Mam skrypt ktory wskazuje pozycje kursora i dodaje info na stronie:
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. window.onload = init;
  3. function init() {
  4. if (window.Event) {
  5. document.captureEvents(Event.MOUSEMOVE);
  6. }
  7. document.onclick = getXY;
  8. }
  9.  
  10.  
  11. function getXY(e) {
  12. x = (window.Event) ? e.pageX : event.clientX;
  13. y = (window.Event) ? e.pageY : event.clientY;
  14.  
  15. document.position.position1.value = x+":"+y;
  16. }
[JAVASCRIPT] pobierz, plaintext

I tutaj juz wszystko jasne... do momentu gdy chce zaznaczyc drugi punkt, ale tak, aby nie stracic tego pierwszego. Mam dwa inputy, position1 to polozenie 1, position2 to ma byc tego drugiego... Ale jak pobrac przy uzyciu tej samej funkcji druga wartosci i wpisac ja gdzie indziej?

Z gory dziekuje za pomoc.

Ten post edytował c4ash 15.02.2014, 12:29:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Nie wiem czy dobrze rozumiem: chcesz, żeby po kliknięciu wypełniło się pierwsze pole, ale gdy to pole jest już wypełnione, to wtedy drugie pole, tak?

To możesz np. tak:
[JAVASCRIPT] pobierz, plaintext
  1. window.onload = init;
  2. function init() {
  3. if (window.Event) {
  4. document.captureEvents(Event.MOUSEMOVE);
  5. }
  6. document.onclick = getXY;
  7. }
  8.  
  9.  
  10. function getXY(e) {
  11. x = (window.Event) ? e.pageX : event.clientX;
  12. y = (window.Event) ? e.pageY : event.clientY;
  13.  
  14. document.getElementById(document.getElementById('position1').value === '' ? 'position1' : 'position2').value = x+":"+y;
  15. }
[JAVASCRIPT] pobierz, plaintext


Zauważ, że użyłem document.getElementById zamiast document.nazwaFormularza.nazwaPola. Żeby zadziałało, inputy muszą mieć odpowiednio id="position1" i id="position2"
Go to the top of the page
+Quote Post
c4ash
post
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 9
Dołączył: 14.01.2010

Ostrzeżenie: (0%)
-----


No faktycznie, dziala. Trojoperator zalatwia sprawe.
Ale teraz jeszcze inne dzialanie.. A tego to juz nie mam pojecia jak zaczac, czy ugryzc.
Co nalezy dodac, aby te punkty byly jakos zaznaczone, albo jeszcze inaczej - aby pole powstale przez klikniecie tych dwoch punktow, bylo obramowane w jakis sposob?
Aby wyjasnic moze jeszcze dokladniej - zaznaczajac dwa punkty mamy wierzcholki prostokata - jak zrobic, aby widac bylo takie obramowanie?

To co przyszlo mi do glowy, to pobrac te dane z position1 i 2 przez getElementById - nastepnie uzyc funkcji ktora sprawila by stworzyc zaznaczenie. Mysle w dobyrm kierunku?
Czy js ma gotowe funkcje, ktore mozna by wykorzystac?
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Po Twoim opisie wciąż nie mam pojęcia o co chodzi smile.gif Nie wiem o jakie obramowanie chodzi.
Go to the top of the page
+Quote Post
c4ash
post
Post #5





Grupa: Zarejestrowani
Postów: 73
Pomógł: 9
Dołączył: 14.01.2010

Ostrzeżenie: (0%)
-----


Ok, to moze tak: jak wykonac w js aby mozna bylo narysowac sobie prostokat na stronie, w dowolnym miejscu?
Mam juz wspolrzedne poczatku, konca. Wymyslilem, aby js rysowal diva z przezroczystym tlem, czy tam polprzezroczystym.
Czyli do zdarzenia onclick dopisac document.createElement('div') i ustawic element.style.background

Czy tok rozumowania jest dobry?
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #6





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Tak, tok rozumowania jest dobry. Prostokąt będzie taki jak chcesz i tam gdzie chcesz, gdy nadasz mu style:
  • position: absolute
  • left
  • top
  • width
  • height
  • background
Go to the top of the page
+Quote Post
c4ash
post
Post #7





Grupa: Zarejestrowani
Postów: 73
Pomógł: 9
Dołączył: 14.01.2010

Ostrzeżenie: (0%)
-----


Czy jest cos jeszcze, o czym powinienem wiedziec? Gdyz createElement nie dodaje nowego div`a..
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. window.onload = init;
  3. function init() {
  4. if (window.Event) {
  5. document.captureEvents(Event.MOUSEMOVE);
  6. }
  7. document.onclick = getXY;
  8.  
  9. }
  10.  
  11.  
  12. function getXY(e) {
  13. x = (window.Event) ? e.pageX : event.clientX;
  14. y = (window.Event) ? e.pageY : event.clientY;
  15.  
  16. document.getElementById(document.getElementById('position1').value === '' ? 'position1' : 'position2').value = x+":"+y;
  17.  
  18. }
  19.  
  20. function getID(oObject)
  21. {
  22. var id = oObject.id;
  23. document.position.gei.value = id;
  24.  
  25. }
  26.  
  27.  
  28. function markIt(e)
  29. {
  30. var mark = document.createElement('div');
  31. mark.id = 'mark';
  32. mark.style.background = '#fff';
  33. mark.style.position = 'absolute';
  34. mark.style.left = '50';
  35. mark.style.top = '150';
  36. mark.style.width = '50';
  37. mark.style.height = '50';
  38. document.getElementById('wrapper').appendChild('mark');
  39. }
  40. </script>
[JAVASCRIPT] pobierz, plaintext

A tresc dokumentu jest jak ponizej:
  1. <div id="kontener">
  2. <form name="position">
  3. <input name="position1" id="position1" type="text" /><input name="position2" id="position2" type="text" /><input name="gei" type="text" id="getElementId" />
  4. </form>
  5. <div id="wrapper"><img src="ferrari_01.jpg" width="1000" height="650" ismap="ismap" id="ferrari" onclick="getID(this);markIt(this);"/></div>
  6. <div id="wrapper"><img src="peugeot.jpg" width="100" height="100" id="peugeot" onclick="getID(this);"/></div>
  7. </div>


Ten post edytował c4ash 16.02.2014, 15:02:06
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #8





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


  1. Masz dwa elementy o id = wrapper
  2. Nie
    [JAVASCRIPT] pobierz, plaintext
    1. document.getElementById('wrapper').appendChild('mark');
    [JAVASCRIPT] pobierz, plaintext
    , tylko
    [JAVASCRIPT] pobierz, plaintext
    1. document.getElementById('wrapper').appendChild(mark);
    [JAVASCRIPT] pobierz, plaintext
  3. Style left, top, width i height powinny mieć na końcu podaną jednostkę, czyli nie '50', tylko '50px' itd.
Go to the top of the page
+Quote Post
c4ash
post
Post #9





Grupa: Zarejestrowani
Postów: 73
Pomógł: 9
Dołączył: 14.01.2010

Ostrzeżenie: (0%)
-----


1. Poprawione, teraz oba obrazki sa w jednym div o id="wrapper".
2. Usunięte '' z appendChild.
3. Dodane jednostki do styli.

I div sie objawił. Dziekuje! Jestes wielki!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 15:05