Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

Exercitii in JavaScript

- - - - -
  • Please log in to reply
20 replies to this topic

#1
n_priceputu

n_priceputu

    Member

  • Grup: Members
  • Posts: 769
  • Înscris: 12.11.2008
Salut,

Incerc sa mai invat cate ceva, dar e greu, recunosc.

Am facut scriptul de mai jos in care functia nu da niciun rezultat
Am controlat si browserul (Firefox) admite scripturile

Ma poate ajuta cineva?
Multumiri anticipate

<html>
<head>
<title>functia care inverseaza un sir</title>
<script type="text/javascript">

/* functia oglinda scrie un sir in ordine inversa
    se foloseste un ciclu for care muta caracter cu caracter
    ATENTIE - folosim concatenarea care completeaza un sir
de la dreapta la stanga
*/
function oglinda(x) {
var oglx="";
for (var i = w.length - 1; i >= 0; i--) {
    oglx = oglx.concat(x[i]);
}
return oglx;
}

</script>
</head>

<body>
<h2>Se scrie un sir(cuvant) in ordine inversa</h2>
<input type = "button" value = "INVERSEAZA SIRUL 'astazi este o zi' " onclick="alert(oglinda(sir1))" >
<script type="text/javascript">
<h2>Se scrie un sir(cuvant) in ordine inversa</h2>
var sir1="astazi este o zi";
var sirinvers = oglinda(sir1);
<input type = "button" value = "INVERSEAZA SIRUL 'astazi este o zi' " onclick="alert(oglinda(sir1))" >
document.writeln("a fost " +  sir1 <br/>);
document.writeln("si s-a intors " + sirinvers);


</script>
</body>
</html>

#2
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,950
  • Înscris: 24.04.2013
  • Cine este w (in functia oglinda())?
  • Unde ai citit ca poti avea elemente HTML (<h2/>, <input/>) in interiorul unui <script/>?
  • Nu lipseste cate ceva prin zona + sir1 <br/>)?


#3
n_priceputu

n_priceputu

    Member

  • Grup: Members
  • Posts: 769
  • Înscris: 12.11.2008
1. Da, de fapt in loc de w trebuie sa fie x; am corectat
2. Nu am citit ca (<h2/>, <input/>) sunt interzise din interiorul unui script, dar le-am scos
3. Poate ca in sirul despre care vorbesti sa lipseasca un spatiu.


<html>
<head>
<title>functia care inverseaza un sir</title>
<script type="text/javascript">
/* functia oglinda scrie un sir in ordine inversa
se foloseste un ciclu for care muta caracter cu caracter
ATENTIE - folosim concatenarea care completeaza un sir
de la dreapta la stanga
*/
function oglinda(x) {
var oglx="";
for (var i = x.length - 1; i >= 0; i--) {
oglx = oglx.concat(x[i]);
}
return oglx;
}
</script>
</head>
<body>
<h2>Se scrie un sir(cuvant) in ordine inversa</h2>
<input type = "button" value = "INVERSEAZA SIRUL 'astazi este o zi' " onclick="alert(oglinda(sir1))" >
<script type="text/javascript">
<h2>Se scrie un sir(cuvant) in ordine inversa</h2>
var sir1="astazi este o zi";
var sirinvers = oglinda(sir1);
document.writeln("a fost " +  sir1 <br/>);
document.writeln("si s-a intors " + sirinvers);

</script>
</body>
</html>

Dar tot nu merge
Poate ca mai sunt si alte observatii

#4
liviu_valcu

liviu_valcu

    Junior Member

  • Grup: Members
  • Posts: 144
  • Înscris: 10.02.2014
Aici : onclick="alert(oglinda(sir1))" . 'sir1' este Undefined. Ai incercat cu debugger-ul?

#5
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,950
  • Înscris: 24.04.2013
@n_priceputu: Niste ghilimele ceva? Un semn ‘plus’?

#6
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,225
  • Înscris: 06.03.2011
Normal că 'sir1' este Undefined, unde îl inițializezi tu?

Mută

var sir1="astazi este o zi";
var sirinvers = oglinda(sir1);

înainte de funcție spre exemplu.

Cu toate că nu e scris chiar...

#7
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017

View Postn_priceputu, on 24 aprilie 2017 - 08:30, said:

1. Da, de fapt in loc de w trebuie sa fie x; am corectat
2. Nu am citit ca (<h2/>, <input/>) sunt interzise din interiorul unui script, dar le-am scos
3. Poate ca in sirul despre care vorbesti sa lipseasca un spatiu.


<html>
<head>
<title>functia care inverseaza un sir</title>
<script type="text/javascript">
/* functia oglinda scrie un sir in ordine inversa
se foloseste un ciclu for care muta caracter cu caracter
ATENTIE - folosim concatenarea care completeaza un sir
de la dreapta la stanga
*/
function oglinda(x) {
var oglx="";
for (var i = x.length - 1; i >= 0; i--) {
oglx = oglx.concat(x[i]);
}
return oglx;
}
</script>
</head>
<body>
<h2>Se scrie un sir(cuvant) in ordine inversa</h2>
<input type = "button" value = "INVERSEAZA SIRUL 'astazi este o zi' " onclick="alert(oglinda(sir1))" >
<script type="text/javascript">
<h2>Se scrie un sir(cuvant) in ordine inversa</h2>
var sir1="astazi este o zi";
var sirinvers = oglinda(sir1);
document.writeln("a fost " +  sir1 <br/>);
document.writeln("si s-a intors " + sirinvers);

</script>
</body>
</html>

Dar tot nu merge
Poate ca mai sunt si alte observatii
Da sunt si multe.
Uite mai jos este un link de JSFiddle in care  ti-am facut ca exemplul tau sa mearga:
https://jsfiddle.net/fd9t2ha9/1/

Observatii:
invata sa folosesti jquery.
iinvata bazele DOM-ului.

Cateva linkuri utile ca sa intelegi ce fac functiile(in afara de functia ta) din exemplul de mai sus:
https://www.w3school...get_started.asp
https://www.w3school...event_ready.asp
https://www.w3school...r_font_font.asp

Daca vrei sa inveti programare, Javascript este o alegere proasta.Pentru a invata programare , treci pe C sau C++ sau java,Dupa ce stapanesti bazele programarii si workflowul variabilelor intr-un program, de abia atunci incepi cu javascriptul.

Pentru javacript iti recomand sa inveti cum sa folosesti debuggerul de Chrome( WinKey + ALT+ I  sau Command + Option + I pe Mac)

Edited by lightpoint, 24 April 2017 - 11:38.


#8
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,225
  • Înscris: 06.03.2011
LE: Citește ce ți-a dat lightpoint, trebuie să înțelegi cum funționează lucrurile la bază.

Edited by vlad29marko, 24 April 2017 - 11:33.


#9
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,950
  • Înscris: 24.04.2013
@vlad29marko: Ce spui tu nu este total gresit. sir1 ar fi initializat in momentul in care se face referire la el daca nu ar exista celelalte erori… Deci eroarea semnalata cum ca sir1 e nedefinit este doar o consecinta a altora, care nu par a fi semnalate la fel de clar (sau nu sunt semnalate deloc).

@lightpoint: Nu spun ca jQuery nu e util in unele cazuri, dar folosirea excesiva a lui (si a altor biblioteci similare), inclusiv pentru fleacuri de genul celui de fata unde se pot folosi scripturi mult mai elementare, este sursa bloat-web-ului pe care il vedem in ziua de azi. Pagini care se incarca greu, consum de resurse in prostie, incompatibilitati de tot felul, etc, etc.

Edited by sags, 24 April 2017 - 11:39.


#10
Vladinskaya

Vladinskaya

    Rustproof Member

  • Grup: Senior Members
  • Posts: 3,225
  • Înscris: 06.03.2011
Lucrurile trebuiesc făcute într-o ordine, nu aruncate la întâmplare.
De reținut că js-ul se execută synchronous și e single-threaded.

#11
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,950
  • Înscris: 24.04.2013
@vlad29marko: Scriptul care defineste sir1 se executa in timpul incarcarii paginii, iar sir1 este utilizat in onclick= mult dupa ce pagina este afisata pe ecran si deci sir1 este deja creat si initializat.

Adevarata cauza a erorii este secventa de caractere …hmm… fantezista… pe care a pus-o in interiorul elementului <script/> din <body/> (nu cel care defineste functia). Aceasta cade la analiza sintactica, nu poate fi considerata cod Javascript valid, si prin urmare este ignorata complet; nu e executata nici macar partial. De aici sir1 nedefinit, document.writeln() din interiorul ei nu produc nimic, etc.

Edited by sags, 24 April 2017 - 11:48.


#12
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017

View Postsags, on 24 aprilie 2017 - 11:32, said:

@lightpoint: Nu spun ca jQuery nu e util in unele cazuri, dar folosirea excesiva a lui (si a altor biblioteci similare), inclusiv pentru fleacuri de genul celui de fata unde se pot folosi scripturi mult mai elementare, este sursa bloat-web-ului pe care il vedem in ziua de azi. Pagini care se incarca greu, consum de resurse in prostie, incompatibilitati de tot felul, etc, etc.
Asta nu este din vina Jquery-ului ci a proastei gestionari.Jqueryul a fost creat pt a simplifica sintaxa enorm de complicata care poate deveni in cazul in care avem algoritmi complecsi si stufosi ce ruleaza pe partea de client. Este bine ca userul sa invete Jquery deaorece acesta ii permite o flexibilitate remarcabila in managementul datelor pe partea de client, daca este folosit cum trebuie. Iti recomand (daca ai unde) sa te utii pe un cod  bine scris in paradigma OOP cu  Jquery si obiecte JSON .Pur si simplu este remarcabil si ramai uimti ce "broderii" se poat crea.In plus raspunde si foarte repede. Deci nu arunca vine pe unealta cand cel care manuieste unealata este de vina.

PS: ce sa mai vorbim cand vine vorba de a trimite http requesturi: jquery style vs javacript style;

Apoi Jquery se foloseste foarte mult si in frameworkuri  de javascript.Este absolut obligatoriu ca un viitor posibil angajat programator sa stie notiunile de baza Jquery si cum acesta functioneaza.

Edited by lightpoint, 24 April 2017 - 12:04.


#13
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017
@sags
LE : Am adaugat si versiunea in paradigma OOP facuta in graba in pauza de masa: https://jsfiddle.net/fd9t2ha9/10/
Asa cum se poate observa , incapsularea via OOP impreuna cu Jquery (si eventual in cele din urma obiecte JSON) dau un aspect cu totul diferit fata de paradigma imperativa.
Desi pentru acest task pare stufos el nu este, doarece contine si o parte  rudimentare de management al stilurilor, in aceasi clasa. Asadar in aceaisi clasa am partea de formatarea a datelor cat si partea de procesare a datelor.
Sigur ca sa poate merge si la un next-level respectiv partea de formatare se poate baga intr-un obiect JSON dedicat(alta clasa) si modificata astfel incat sa accepte generice si folosita prin design pattern de compozitie a obiectelor ( buidere)
dar deja mergem prea departe pentru deocamdata.

Pt  @n_priceputu: studiaza cele ce ti-am indicat in postul anterior cat si cele din linkul de mai sus. In exemplu de sus ai un rezumat privind cum se programeaza problema ta in paradigma OOP.Smecheria aici consta in metoda $(document).ready(...)
cat si in
cuvantul cheie this  aflat in obiectul "Oglinda". De asemenea observa cum se apeleaza in lant metodele care folosesc this.

Edited by lightpoint, 24 April 2017 - 13:35.


#14
n_priceputu

n_priceputu

    Member

  • Grup: Members
  • Posts: 769
  • Înscris: 12.11.2008
Multumesc tuturor.

Va marturisesc faptul ca am ceva experienta in programare
Mai bine zis, am avut, pentru ca au trecut cativa ani buni de atunci
Primul calculator pe care am lucrat se numea Felix-C256, programele se incarcau de pe cartele perforate
Dupa vreo 2 ani ajunsesem un programator bunicel, pe care se putea conta
Am facut cateva programe  'grele' care gestionau fluxuri importante dintr-o intreprindere.

Intamplarea a facut sa apuc pe o alta cale, nu esential diferita diferita,
numai ca acolo, fluxul fiind cantitativ mult mai mic,  lucrurile se rezolvau si altfel.
Asa ca am ramas doar cu amintiri

Referitor la scriptul in discutie.

Sa ma apuc acum de Java, C++ e mult, mult prea tarziu.
Nici nu stiu daca mai am timp sa duc lucrurile la bun sfarsit

@lightpoint nu ma duce in alta parte, un dentist bun face proteza dupa gura, nu gura dupa proteza
Desi mi-as dori, scopul meu nu este sa performez, nu mai am resurse suficiente pentru asa ceva
As fi recunoscator daca am putea lamuri eroarea/erorile si sa facem scriptul sa mearga
in stilul meu mai primitiv

Edited by n_priceputu, 24 April 2017 - 16:58.


#15
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017

View Postn_priceputu, on 24 aprilie 2017 - 16:50, said:

@lightpoint nu ma duce in alta parte, un dentist bun face proteza dupa gura, nu gura dupa proteza
Desi mi-as dori, scopul meu nu este sa performez, nu mai am resurse suficiente pentru asa ceva
As fi recunoscator daca am putea lamuri eroarea/erorile si sa facem scriptul sa mearga
in stilul meu mai primitiv
poftim :
<html>
<head>
<title>functia care inverseaza un sir</title>
</head>
<body>
<h2>Se scrie un sir(cuvant) in ordine inversa</h2>
<input type = "button" value = "INVERSEAZA SIRUL 'astazi este o zi' " onclick="alert(oglinda(sir1))" >
<h2>Se scrie un sir(cuvant) in ordine inversa</h2> <!-- added by lightpoint: asta nu are ce cauta interiorul unui javascript scris ca si cum ar fi fost in html -->
<script type="text/javascript">
/* functia oglinda scrie un sir in ordine inversa
se foloseste un ciclu for care muta caracter cu caracter
ATENTIE - folosim concatenarea care completeaza un sir
de la dreapta la stanga
*/
/*
  added by lightpoint:
  pune totul in javascript la sfarsitul fisierului inainte de a inchide body-ul;
*/
function oglinda(x) {
  var oglx="";
  for (var i = x.length - 1; i >= 0; i--) {
   oglx = oglx.concat(x[i]);
  }
  return oglx;
}
var sir1="astazi este o zi";
var sirinvers = oglinda(sir1);
document.writeln("a fost " +  sir1  + "<br/>"); //added by lightpoint: aici iti lipseau "" de la <br/> si operatorul "+"  care facea concatenarea
document.writeln("si s-a intors " + sirinvers);
</script>
</body>
</html>



#16
n_priceputu

n_priceputu

    Member

  • Grup: Members
  • Posts: 769
  • Înscris: 12.11.2008
Multumesc foarte mult, chiar merge si cred ca am invatat ceva.

Dar am si o intrebare

Cred ca nu ma insel ca am citit undeva ca este bine ca
sa definim functiile intre <head> si </head>
Era acolo si o argumentare in sensul ca trebuie sa fim siguri
ca functia este definita inainte de a fi apelata.
In exemplul depanat de dvs se face apelarea (prin 'onclick')
inainte de definire si totusi merge

Deasemenea, variabila sir1 este definita ulterior apelarii functiei
care face inversarea. Mie mi se pare un pic pe dos, dar merge

#17
n_priceputu

n_priceputu

    Member

  • Grup: Members
  • Posts: 769
  • Înscris: 12.11.2008
Merge si asa

<html>
<head>
<title>functia care inverseaza un sir</title>
<script type="text/javascript">
/* functia oglinda scrie un sir in ordine inversa
se foloseste un ciclu for care muta caracter cu caracter
ATENTIE - folosim concatenarea care completeaza un sir
de la dreapta la stanga
*/
/*
  added by lightpoint:
  pune totul in javascript la sfarsitul fisierului inainte de a inchide body-ul;
*/
function oglinda(x) {
  var oglx="";
  for (var i = x.length - 1; i >= 0; i--) {
   oglx = oglx.concat(x[i]);
  }
  return oglx;
}
</script>
</head>
<body>
<h2>Se scrie un sir(cuvant) in ordine inversa</h2>
<script type="text/javascript">
var sir1="astazi este o zi";
var sirinvers = oglinda(sir1);
<!--
document.writeln("a fost " +  sir1  + "<br/>"); //added by lightpoint: aici iti lipseau "" de la <br/> si operatorul "+"  care facea concatenarea
document.writeln("si s-a intors " + sirinvers  + "<br/>");
-->
</script>
<input type = "button" value = "INVERSEAZA SIRUL 'astazi este o zi' " onclick="alert(oglinda(sir1))" >
</body>
</html>

#18
sags

sags

    Senior Member

  • Grup: Senior Members
  • Posts: 9,950
  • Înscris: 24.04.2013
Tot ai gresit, chiar daca ‘merge’. In interioriul unui element <script/> nu trebuie sa ai DECAT cod Javascript valid (sau in alt limbaj, de exemplu VBscript, dupa cum zice type=). Se face ca in JavaScipt <!-- este inceput de comentariu pe o linie, adica sinonim cu //. Ma mira insa ca --> este acceptat desi nu cred ca ar trebui; probabil browserele au devenit mult prea ingaduitoare. De altfel observi ca desi tu probabil crezi ca ai comentat cele 2 document.writeln(), ele tot se executa.

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate