Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    2

    esercizio problematico con <i> e onClick

    Ciao a tutti!
    Sono nuovissimo nel forum, e nei forum in generale, quindi perdonatemi se ho spagliato a postare qui il mio quesito!
    Da poco sono alle prese con js e ho un esercizio che mi sta facendo impazzire.
    Spero che qui qualcuno riesca ad illuminarmi.

    Il testo è il seguente:
    "Si sfrutti js per ottenere una pagina html avente un titolo, sottotitolo e un paragrafo contenente 100 elementi di tipo [i] con i primi 100 numeri interi.
    Cliccando in un punto qualsiasi della pagina l'elemento su cui si è cliccato deve diventare rosso se era nero (colore di default) e tornare nero se era rosso (ovvero se si è già cliccato). Passando sul titolo il testo del medesimo deve diventare "Sei passato".
    Infine, cliccando sul sottotitolo deve apparire, in fondo alla pagina, il testo dell'elemento su cui si era cliccato prima; ovvero se clicco su un elemento (ad esempio uno degli [i]) che contiente il testo "3" e poi clicco sul sottotitolo, in fondo alla pagina deve apparire il valore "3"."

    il codice che ho scritto sin'ora è:

    <html>
    <head>
    <script type="text/javascript">

    function StampaN()
    {
    var i=1;
    while (i<=100)
    {
    document.write(i);
    document.write("
    ");
    i++;
    }
    }


    function scriviCalce(id)
    {
    document.getElementById('par2').innerHTML = document.getElementById.target.innerHTML;
    }


    function CambiaTit()
    {
    document.getElementById("tit").innerHTML = "Sei passato!";
    }

    </script>
    </head>
    <body onClick="event.target.style.color='red'" onMouseout="event.target.style.color='black'">
    <script type="text/javascript">

    document.write("<h1 id='tit' onMouseOver='CambiaTit()'>Titolo</h1>");
    document.write("<h2 id='subt' onClick='scriviCalce(e)'>Sottotitolo</h2>");
    document.write("<p id='par1'>"+StampaN()+"</p>");
    document.write("<p id='par2'></p>");

    </script>

    </body>
    </html>



    I problemi che riscontro sono:
    1) nel

    con i valori [i], dopo il numero 100 scrive "undefined";
    2) non considera gli [i] come singoli, ma come un unico blocco (ad es. al passaggio del mouse diventano rossi tutti insieme e non uno per volta);
    3) Il terzo punto non mi riesce proprio... ho scopiazzato qua e là ma non funziona!


    è tutto!
    Scusate la prolissità!

    Ciao!

  2. #2
    ciao krakoa,
    per elementi di tipo [i] l'esercizio non intende scrivere una "i" ma

    krakoa

    il tag serve per stampare a video il corsivo.

    ogni tuo elemento dovrà avere un id univoco se hi bisogno di "colorarlo" singolarmente

    <i id="1">krakoa


    <i id="2">krakoa


    ecc.
    ecc.


  3. #3
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da lucavizzi
    ogni tuo elemento [i] dovrà avere un id univoco se hi bisogno di "colorarlo" singolarmente
    non e' assolutamente necessario (che poi id solo numerici o che cominciano per numero sono errati)
    ogni [i] agisce su se' stesso, quindi nel suo onclick se' stesso e' this

  4. #4
    vero, invece dell'id univoco si può usare this.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    2
    Grazie per le risposte ragazzi!
    Allora sono riuscito ad aggiustare un po' di cose.
    Ora il mio problema rimane il colore.
    Come potete vedere dal codice sottostante sono riuscito ad ottenere il risultato voluto solo sul numero 1.
    ma credo non sia il metodo giusto. Non si può scrivere un'unica funzione per tutti gli id?

    per quanto riguarda l'uso di "this", ho fatto delle prove ma non ho afferrato come usarlo..

    ecco il codice modificato:

    <html>
    <head>
    <title>Esercizio 3</title>
    <script type="text/javascript">

    function scriviCoordinate(e) {
    document.getElementById("par2").innerHTML = e.target.innerHTML;
    }

    function CambiaTit()
    {
    document.getElementById("tit").innerHTML = "Sei passato!";
    }


    function cambiaColoreRed()
    {
    document.getElementById("1").style.color= "red";
    }

    function cambiaColoreBlack(id)
    {
    document.getElementById("1").style.color= "black";
    }

    </script>
    </head>
    <body onClick="scriviCoordinate(event)">
    <script type="text/javascript">

    document.write("<h1 id='tit' onMouseOver='CambiaTit()'>Titolo</h1>");
    document.write("<h2 id='subt' onClick='scriviCalce()'>Sottotitolo</h2>");

    document.write("

    "+
    "<i id='1' onClick='cambiaColoreRed()' onMouseOut='cambiaColoreBlack()'>1[/i]"+"
    "+
    "<i id='2'>2[/i]"+"
    "+
    "<i id='3'>3[/i]"+"
    "+
    "<i id='4'>4[/i]"+"
    "+
    "<i id='5'>5[/i]"+"
    "+
    "<i id='6'>6[/i]"+"
    "+
    "</p>");

    document.write("<p id='par2'>paragrafo</p>");

    </script>

    </body>
    </html>

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    <i onclick='cambiaClasse(this)'>a[/i]

    function cambiaClasse(el){
    el.className=(el.className=='rosso')?'':'rosso'
    }

    <style type="text/css">
    .rosso {color:red;}
    </style>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.