Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmienne do paru obiektów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
hinczyk
Witam!
Mam taki kodzik:
  1. <?php
  2. <script type="text/javascript">
  3. function dragDrop(e,x,y,d,b,E){
  4. d=document;E=d.documentElement;b=d.body;if(!E)return
  5.  
  6. l=d.getElementById("sciana").offsetLeft
  7. t=d.getElementById("sciana").offsetTop
  8. w=d.getElementById("sciana").offsetWidth
  9. h=d.getElementById("sciana").offsetHeight
  10.  
  11. if(d.p)d.p.style.zIndex=1
  12. with(d.p=this){
  13. style.zIndex=10;e=e||event
  14. zx=e.layerX||e.offsetX;zy=e.layerY||e.offsetY
  15. x=parseInt(style.left+0)-e.clientX;y=parseInt(style.top+0)-e.clientY;
  16. }
  17. d.onmousemove=function(e){
  18. e=e||event;with(d.p.style){
  19. left=x+e.clientX+(E.scrollLeft||b.scrollLeft)+"px"
  20. leftx=x+e.clientX+(E.scrollLeft||b.scrollLeft)
  21. top=y+e.clientY+(E.scrollTop||b.scrollTop)+"px"
  22. topx=y+e.clientY+(E.scrollTop||b.scrollTop)
  23. if((leftx>((l-5))) && (leftx<((l+w))) && (topx>((t-5))) && (topx<((t+h)))){
  24. this.onmousemove=null;
  25. alert("najechałes na krawędz");
  26. }
  27. }return!1
  28. }
  29.  
  30. d.onmouseup=function(){
  31. e=e||event;with(d.p.style){
  32. left=100+"px"
  33. top=100+"px"}
  34. this.onmousemove=null
  35. }
  36. }
  37. function dragDropInit(i,j,a,t){
  38. for(j=0;t=['div','img'][j++];)
  39. for(i=0;a=document.getElementsByTagName(t)[i++];)
  40. if(a.className=="drag")a.onmousedown=dragDrop
  41. }
  42. function addEvent(O,E,F,x){return(x=O.addEventListener)?x(E,F,1):(x=O.attachEvent)?x('on'+E,F):!1}
  43. addEvent(window,'load',dragDropInit)
  44. </script>
  45. </head>
  46. <body>
  47. <div class="drag" style="top:100px;left:100px;"><span style="width:5px; height:5px;"></span></div>
  48. <span id="sciana" style="position:absolute;left:100px;top:300px;width:100px;height:100px;background:
    #000"
    ></span>
  49. <span id="sciana" style="position:absolute;left:210px;top:300px;width:100px;height:100px;background:
    #000"
    ></span>
  50. ?>


i moje pytanie brzmi: Czy da się aby te zmienne l, t,w, h działały dla każdego span z id=sciana(bez względu ile ich jest), a nie tylko dla pierwszego?
webdice
Użyj name zamiast id, a w JavaScript odwołuj się tak:

  1. document.getElementsByName ('sciana').item(0)
  2. document.getElementsByName ('sciana').item(1)
hinczyk
no tak ale jeżeli na stronie będzie jakieś 50 obiektów o name=sciana to mój kod powiększy się o 50 krotnie.
a mi chodzi o to żeby mieć zmienne l,t,w,h do każdego obiektu, a nie żebym musiał tworzyć
  1. l1=d.getElementsByName("sciana").item(1).offsetLeft
  2. l2=d.getElementsByName("sciana").item(2).offsetLeft
  3. l3=d.getElementsByName("sciana").item(3).offsetLeft

i tak dalej. wiem że można zrobić to w pętli ale później nie będzie działał ten if:
  1. if((leftx>((l-5))) && (leftx<((l+w))) && (topx>((t-5))) && (topx<((t+h)))){
  2. this.onmousemove=null;
  3. alert("najechałes na krawędz");
  4. }
webdice
To zrób sobie pętle która odczyta te wszystkie elementy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.