[JS] getElementById w pętli for, rysowanie prostej.

0

Witam
1)
Jak mam zapisać id elementu jeśli część nazwy ma się zmieniać w pętli.
Konkretnie chodzi mi o taką sytuację, mam parę inputów z id xx1, xx2, xx3 ...
A następnie chce te elementy wrzucić do tabeli X.

for (i=0;i<5;i++) X[i]=document.getElementById("xx"+i).value

Jak ma wyglądać składnia pogrubionego fragmentu, próbowałem z +, przecinkiem, bez niczego.

Czy da się jakoś w JS rysować. Znaczy mam prostą y=ax+b i chciałbym ją narysować, czy jedyna opcja to dawanie w miarę gęsto jakiś elementów (np. obrazek małej kropki), których współrzędne sobie oblicze z równania??

Z góry dzięki

0

"xx"+i wygląda dobrze
jeśli nie działa, to można pobawić się eval("xx"+i) ale tak jak jest powinno być dobrze

0

do rysowania mozesz uzyc PHP

masz skrypt linia.php
i obrazek na stronie ktorego adres zmieniasz na np.
linia.php?x=0&y=0&x2=100&y2=100

nie wiem czy tak sie da w JS bo nie pisze ale moge dac ci skrypt PHP ktory rysuje taka linie i zwraca obrazek GIF

0

ten sam problem - potrzebuję rysowania różnych figur w javascript (znaczy nie muszę a to wcale nie musi działać - tylko bajer graficzny pozwalający na odciążenie serwera i znaczące obniżenie czasu oczekiwania na efekt) i w związku z tym nawet miałem zakładać topic czego najlepiej użyć jako pixela ? diva z bg 1/1, kropkę tekstową wyskalowanej na 1/1, obrazki małe czy może coś innego ? żeby jak najszybciej działało, najlepiej wyglądało (zwłaszcza po zaznaczeniu tekstu blisko obszaru), mało pamięci pożerało a najlepiej jakby do tego było przeznaczone ;P

co do problemu to jest dobrze (składnia, kod - bo idea chyba niezbyt), może pokaż dalej po tym value coś zwaliłeś albo wcześniej, co do tego value przypisujesz ? może ma być małe "x" a nie duże jako tablica, ew. daj w "pojedyncze cudzysłowy" (apostrofy)

0

Już działa, wysypywało się przy tym, że indeksy się trochę nie zgadzały (Array się zaczyna od 0 [glowa] ). No niestety musze używać JS bo to projekt na zaliczenie z JS. Ogólnie programik działa tak, że podajesz mu jakieś punkty x i y on przeprowadza regresję liniową i zwraca a i b, niepewności, współczynnik korelacji. A teraz chce, żeby jeszcze to ładnie namalował (w sensie tą prostą i punkty bazowe).

No póki znalazłem coś takiego
http://www.js-examples.com/page/javascripts__example.html?view=827
Ale jeszcze nie rozpracowałem jak to działa :/

0

Po prostu w pętli wstawia kod:

</p>
zmieniając jedynie wartości left i top aby odpowiednio umiejscowić kwadracik 2x2px
0

Daje:

function rysuj()
{
for (i=0;i<n;i++) {document.write("

")};
}</p>

I w konsoli JS w mozilli wyskakuje mi "i is not defined", o co chodzi?
Sorki, mam nadzieję nie jestem zbyt upierdliwy. [browar]

0

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html> <head> <title>Tytuł</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <script type="text/javascript"> var n = 4; var X2 = Array(1,4,6,9); var Y2 = Array(2,4,6,19); var tresc = ''; function rysuj() { for (i=0;i<n;i++) tresc="tresc" +="(&quot;&lt;div" style="position: relative; background-color: red; left:&quot; + X2[i] + &quot;px; top:&quot; + Y2[i] + &quot;px; width: 6px; height: 6px; font-size: 0px"></div>"); document.getElementById('bla').innerHTML = tresc; } </script> </head> <body> <input type="button" value="xxx" onclick="rysuj()">
</body> </html> ```

Zamieniłem absolute na relative, dzięki temu przemieszczając DIVa "bla" przemieszczasz rysunek.

0
MichalUK napisał(a)

I w konsoli JS w mozilli wyskakuje mi "i is not defined", o co chodzi?
O to ze chcesz uzywac zmiennej, ktorej jeszcze niezdefiniowales ;)
for (var i=0;i<n;i++)albo

var i;
for (i=0;i<n;i++)

Jak kto woli ;]

0

desperat - to nie jest potrzebne
składnia:
for (i=0; i<5; i++)
działa bez problemu

0

Oki programik zrobiony, wielkie dzięki za pomoc.
[browar]

0
Marooned napisał(a)

działa bez problemu
tak, dziala, dlatego to nie jest blad, ale hint.
czasem zamiast napisac
zmienna
napiszesz np
zmeinna
skrypt bedzie dzialal ale nie poprawnie, dzieki takim hintom mozna takie "przejezyczenia" wylapac.
(w VBS jest takie fajne polecenie do tego w JS nie, a czasem sie to baaardzo przydaje ;) )

Swoja droga ciekaw jestem jakiej przegladarki uzywasz, bo w moim FF tego nie pokazuje :(

0

Przetestowane na:
IE 6.0
FF 1.5.0.4

0

Zle sie wyrazilem, nie chodzilo mi o Ciebie Marooned, tylko o MichalUK, bo on mial ten komunikat ;]

0

No tu jest trochę cyferek nie wiem która to.
W każdym razie:
Mozilla/5.0 (Windows [...] rv:1.7.12) [...] Firefox/1.0.7

A tak btw. bo robię teraz drugi programik też w JS - Wieże Hanoi

Czy można zrobić tak, mam trzy wektory (Array) AB AC AD, i teraz robie funkcję

f1(x)
{
która zwraca zależnie od x "AB" albo "AC" albo "AD" (w sensie nazwę, a nie elementy)
}

f2(p)
{
zwraca indeks pierwszego niezerowego elementu z wektora p, jeżeli wszystkie równe zero to zwraca -1
}

f3(k)
{
var kolumna=f1(k);
var indeks=f2(kolumna)
[...]
}

Problem jest taki, że f2 nie chce się wykonać, f1 poprawnie zwraca własności, f2 nic nie zwraca.
oto kod f2

function ktory(w)
{
for (i=0;i<n;i++) {if (w[i]!=0) break};
if (w[n-1]==0) {var kt=-1} else {var kt=i};
return kt;

}

Aha i czy we f3 mogę się odwoływać teraz do elementu przez kolumna[indeks].

1 użytkowników online, w tym zalogowanych: 0, gości: 1