Sviluppo di semplici esercizi HTML con JavaScript [chiuso]

0

Sto sviluppando un sito Web con alcuni semplici esercizi HTML (come quelli in Codeschool e Codacademy), e ora sono bloccato nella fase di correzione, come posso confrontare due stringhe HTML e decidere se l'utente ha inviato un correggerne uno?

Ad esempio, supponiamo di avere la risposta corretta come:

<h1>Hello World</h1>
<h2>Welcome</h2>

e l'utente ha inviato:

<h 1>Hello World</ h1>
<h2>Welcome</h2>

o

<h1> Hello World </h1></h1>
<h2>Welcome</h2>

I precedenti messaggi sono considerati corretti nei siti web che ho menzionato prima, quindi come posso ottenere tale funzionalità in JavaScript?

Crea elementi DOM? Equivalenza diretta? Utilizzare la semplice espressione regolare per analizzare stringhe HTML? (Capisco che sia duro come un CFG, ma è realizzabile per HTML semplice, non nidificato.) O ci sono alcuni framework di testing per HTML statico?

    
posta Bassel Shmali 07.06.2016 - 19:47
fonte

1 risposta

2

Essenzialmente, il compito è analizzare la risposta "giusta" e la risposta fornita dall'utente. Di conseguenza, otterrete due alberi che possono essere confrontati.

Se hai a che fare con XHTML, qualsiasi parser XML in qualsiasi lingua farà il trucco. Se hai bisogno di convalidare l'HTML che potrebbe non essere necessariamente un documento XML valido, probabilmente avrai bisogno di un pacchetto di terze parti che possa analizzare la stringa e creare il DOM da esso.

Il secondo passo è confrontare i due alberi. Qui, devi sapere esattamente cosa dovrebbe essere considerato giusto o sbagliato. Un ordine sbagliato di bambini? Forse sbagliato. Un ordine errato di attributi? Non importa. Se sei troppo severo, gli utenti si arrabbieranno con te ("Scherzi a parte? Ho fallito questo esercizio perché ho messo Hello World! , mentre Hello, World! con era prevista una virgola ?! ") Se non sei abbastanza severo, alla fine le risposte errate verranno considerate giuste e gli utenti ti daranno la colpa di insegnare loro le cose sbagliate.

La parte difficile sarebbe quella di convalidare esercizi che:

  • Gestisci parti specifiche della sintassi HTML come commenti o CDATA,

  • Hai più risposte valide (anche se non dovresti averne troppa in HTML, in CSS, d'altra parte, molti problemi possono essere risolti usando molte soluzioni diverse),

  • Permetti di prendere un po 'di libertà quando scrivi HTML: per esempio, se l'esercizio è creare un <dl> con i nomi di specie diverse e la loro rispettiva descrizione, dovrebbe davvero cambiare la mia comprensione di questa caratteristica di HTML se Ho inserito un elefante e un cavallo nell'elenco, invece di un gatto e un cane?

    Quest'ultimo caso è interessante di per sé. Si può a malapena convalidare lo schema, ignorando il contenuto effettivo. L'esercizio in sé potrebbe essere qualcosa di simile a:

    Using only three of the tags you've learned, how can you create a sequence containing three species and showing, for every specie, its name and a short, one-line description? You can't use <p>, <div> and <span>.

Se l'app per l'esercizio viene eseguita in un browser, potresti semplicemente inserire la risposta "giusta" e la risposta fornita dall'utente in due elementi nascosti nella pagina, e quindi utilizzare JavaScript (jQuery sarebbe di grande aiuto) per passare attraverso gli elementi e gli attributi. Ciò consentirà all'utente di imbrogliare, ma probabilmente non ha importanza e gli utenti che stanno appena imparando l'HTML sono probabilmente inconsapevoli delle funzionalità della console di debug del browser preferito.

use simple regex to parse HTML strings?

Dimenticalo.

    
risposta data 07.06.2016 - 20:21
fonte

Leggi altre domande sui tag