Skip to content

A simple web application built with HTML, CSS, and JavaScript that allows users to search for the meaning, phonetic, example, and antonyms of English words using the Dictionary API. Features include a user-friendly interface with real-time updates and error handling for non-existent words.

Notifications You must be signed in to change notification settings

ShubhamChoudharyShubh/Dictionary-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

A simple web application built with HTML, CSS, and JavaScript that allows users to search for the meaning, phonetic, example, and antonyms of English words using the Dictionary API. Features include a user-friendly interface with real-time updates and error handling for non-existent words.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages