Skip to content

Latest commit

 

History

History
230 lines (173 loc) · 7.79 KB

README.md

File metadata and controls

230 lines (173 loc) · 7.79 KB

Sure, here is the updated and detailed version of the README file for your Dictionary App project:

Dictionary App

A simple dictionary app that allows users to search for the meaning, phonetic, example, and antonyms of a word using the Dictionary API.

Table of Contents

Features

  • Search for the meaning of a word.
  • Displays the word's phonetic, part of speech, meaning, example, and antonyms.
  • User-friendly interface with loading indicator.

Technologies Used

Setup

  1. Clone the repository:

    git clone https://github.com/your-username/dictionary-app.git
  2. Navigate to the project directory:

    cd dictionary-app
  3. Open index.html in your favorite web browser to run the application.

Usage

  1. Open the app in a web browser.
  2. Enter a word in the search input field.
  3. Click the "Search" button.
  4. The app will display the word's meaning, phonetic, part of speech, example, and antonyms (if available).

Project Structure

dictionary-app/
│
├── index.html        # The main HTML file
├── style.css         # The CSS file for styling
├── script.js         # The JavaScript file containing the app logic
└── README.md         # This README file

JavaScript File Structure

The script.js file contains the logic for interacting with the Dictionary API and updating the user interface.

Detailed Breakdown

  • Event Listener: This listens for the form submission to trigger the word search.

    form.addEventListener('submit', (e) => {
        e.preventDefault();
        getWordInfo(form.elements[0].value);
    });
  • getWordInfo Function: This is an asynchronous function that fetches word information from the API and updates the DOM.

    const getWordInfo = async (word) => {
        document.getElementById("loading").style.display = "block";
        document.getElementById("result").style.display = "none";
    
        try {
            const response = await fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${word}`);
            const data = await response.json();
            let definitions = data[0].meanings[0].definitions[0];
    
            resultDiv.innerHTML = `
                <h2><strong>Word:</strong> ${data[0].word}</h2>
                <p>${data[0].meanings[0].partOfSpeech}</p>
                <p><strong>Meaning:</strong> ${definitions.definition === undefined ? "Not Found" : definitions.definition}</p>
                <p><strong>Example:</strong> ${definitions.example === undefined ? "Not Found" : definitions.example}</p>
                <p><strong>Antonyms:</strong></p>
            `;
    
            if (definitions.antonyms.length === 0) {
                resultDiv.innerHTML += `<span>Not Found</span>`;
            } else {
                for (let i = 0; i < definitions.antonyms.length; i++) {
                    resultDiv.innerHTML += `<li>${definitions.antonyms[i]}</li>`;
                }
            }
    
            document.getElementById("loading").style.display = "none";
            document.getElementById("result").style.display = "block";
    
        } catch (error) {
            document.getElementById("loading").style.display = "none";
            document.getElementById("result").style.display = "block";
            resultDiv.innerHTML = `<p>Word not found. Please try again.</p>`;
        }
    };

Code Explanation

  • form: Selects the form element to attach the event listener.

    const form = document.querySelector('form');
  • resultDiv: Selects the result div where the output will be displayed.

    const resultDiv = document.querySelector('.result');
  • form.addEventListener: Prevents the default form submission and calls the getWordInfo function with the input word.

    form.addEventListener('submit', (e) => {
        e.preventDefault();
        getWordInfo(form.elements[0].value);
    });
  • getWordInfo: Fetches data from the Dictionary API and updates the DOM with the word's details.

    const getWordInfo = async (word) => {
        document.getElementById("loading").style.display = "block";
        document.getElementById("result").style.display = "none";
    
        try {
            const response = await fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${word}`);
            const data = await response.json();
            let definitions = data[0].meanings[0].definitions[0];
    
            resultDiv.innerHTML = `
                <h2><strong>Word:</strong> ${data[0].word}</h2>
                <p>${data[0].meanings[0].partOfSpeech}</p>
                <p><strong>Meaning:</strong> ${definitions.definition === undefined ? "Not Found" : definitions.definition}</p>
                <p><strong>Example:</strong> ${definitions.example === undefined ? "Not Found" : definitions.example}</p>
                <p><strong>Antonyms:</strong></p>
            `;
    
            if (definitions.antonyms.length === 0) {
                resultDiv.innerHTML += `<span>Not Found</span>`;
            } else {
                for (let i = 0; i < definitions.antonyms.length; i++) {
                    resultDiv.innerHTML += `<li>${definitions.antonyms[i]}</li>`;
                }
            }
    
            document.getElementById("loading").style.display = "none";
            document.getElementById("result").style.display = "block";
    
        } catch (error) {
            document.getElementById("loading").style.display = "none";
            document.getElementById("result").style.display = "block";
            resultDiv.innerHTML = `<p>Word not found. Please try again.</p>`;
        }
    };
  • Loading Indicator: Shows a loading message while fetching data.

    document.getElementById("loading").style.display = "block";
    document.getElementById("result").style.display = "none";
  • Data Fetch: Fetches the word data from the Dictionary API.

    const response = await fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${word}`);
  • Data Display: Updates the DOM with the word's meaning, phonetic, part of speech, example, and antonyms.

    let definitions = data[0].meanings[0].definitions[0];
    
    resultDiv.innerHTML = `
        <h2><strong>Word:</strong> ${data[0].word}</h2>
        <p>${data[0].meanings[0].partOfSpeech}</p>
        <p><strong>Meaning:</strong> ${definitions.definition === undefined ? "Not Found" : definitions.definition}</p>
        <p><strong>Example:</strong> ${definitions.example === undefined ? "Not Found" : definitions.example}</p>
        <p><strong>Antonyms:</strong></p>
    `;
    
    if (definitions.antonyms.length === 0) {
        resultDiv.innerHTML += `<span>Not Found</span>`;
    } else {
        for (let i = 0; i < definitions.antonyms.length; i++) {
            resultDiv.innerHTML += `<li>${definitions.antonyms[i]}</li>`;
        }
    }
  • Error Handling: Displays an error message if the word is not found.

    } catch (error) {
        document.getElementById("loading").style.display = "none";
        document.getElementById("result").style.display = "block";
        resultDiv.innerHTML = `<p>Word not found. Please try again.</p>`;
    }

License

This project is licensed under the MIT License.


This README file provides a detailed and comprehensive overview of the project, including the project structure and a detailed explanation of the JavaScript file.