<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lakshit</title>
    <description>The latest articles on DEV Community by Lakshit (@penandcode).</description>
    <link>https://dev.to/penandcode</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1135804%2F7d29f981-8ea1-4138-93c2-f144f8b07265.jpeg</url>
      <title>DEV Community: Lakshit</title>
      <link>https://dev.to/penandcode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/penandcode"/>
    <language>en</language>
    <item>
      <title>Phases of Event in JavaScript</title>
      <dc:creator>Lakshit</dc:creator>
      <pubDate>Sun, 10 Sep 2023 10:00:00 +0000</pubDate>
      <link>https://dev.to/penandcode/phases-of-event-in-javascript-2mf</link>
      <guid>https://dev.to/penandcode/phases-of-event-in-javascript-2mf</guid>
      <description>&lt;p&gt;Introduction:&lt;br&gt;
Events play a crucial role in JavaScript, allowing us to respond to user interactions and create dynamic and interactive web applications. Understanding the phases of JavaScript events and how they propagate through the DOM (Document Object Model) is essential for effective event handling. In this blog post, we will explore the different phases of JavaScript events and discuss their usefulness in event propagation.&lt;/p&gt;
&lt;h2&gt;
  
  
  Event Phases:
&lt;/h2&gt;

&lt;p&gt;JavaScript events go through three distinct phases during propagation: capturing, target, and bubbling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnz7cm6l39131nyefy9g5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnz7cm6l39131nyefy9g5.png" alt="Phases of event" width="775" height="551"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  a. Capturing Phase:
&lt;/h3&gt;

&lt;p&gt;In the capturing phase, the event starts from the topmost ancestor element and travels down the DOM tree to the target element. This phase allows you to capture events on parent elements before they reach the target element. To demonstrate this, consider the following example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"parent"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"child"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click me&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;parent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;parent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;child&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;child&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Parent clicked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;child&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Child clicked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Button clicked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, when you click the button, the event will first trigger the capturing phase, logging "Parent clicked," "Child clicked," and "Button clicked" in that order.&lt;/p&gt;

&lt;h3&gt;
  
  
  b. Target Phase:
&lt;/h3&gt;

&lt;p&gt;After the capturing phase, the event reaches the target element, triggering any event listeners attached directly to it. In our previous example, if we add an event listener to the target element, it will be executed during the target phase:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Button clicked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, when you click the button, the event will log "Button clicked" during the target phase.&lt;/p&gt;

&lt;h3&gt;
  
  
  c. Bubbling Phase:
&lt;/h3&gt;

&lt;p&gt;Once the target phase is complete, the event starts bubbling up the DOM tree, triggering event listeners on parent elements. This phase allows you to capture events on parent elements after they have reached the target element. To demonstrate this, consider the following example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Parent clicked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;child&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Child clicked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Button clicked&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, when you click the button, the event will log "Button clicked," "Child clicked," and "Parent clicked" in that order during the bubbling phase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/penandcode/devscripter/assets/72292130/b4f69ba2-ebb1-4d76-b7a7-4841dd3b3d0f" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Usefulness and Benefits:
&lt;/h2&gt;

&lt;p&gt;Understanding the phases of JavaScript events and event propagation is crucial for effective event handling. Here are some benefits and use cases:&lt;/p&gt;

&lt;h3&gt;
  
  
  a. Event Delegation:
&lt;/h3&gt;

&lt;p&gt;By leveraging the capturing and bubbling phases, event delegation allows you to handle events on multiple elements efficiently. Instead of attaching event listeners to individual elements, you can attach a single event listener to a parent element and utilize event propagation to handle events on child elements.&lt;/p&gt;

&lt;h3&gt;
  
  
  b. Preventing Event Bubbling:
&lt;/h3&gt;

&lt;p&gt;In some cases, you may want to prevent an event from bubbling up the DOM tree. By calling the &lt;code&gt;event.stopPropagation()&lt;/code&gt; method within an event listener, you can stop the event from triggering event listeners on parent elements.&lt;/p&gt;

&lt;h3&gt;
  
  
  c. Event Order and Execution: Understanding the event phases helps you control the order of event execution. By attaching event listeners during the capturing or bubbling phase, you can ensure that specific event handlers are executed before or after others.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  d. Performance Optimization: By utilizing event delegation and capturing phase, you can reduce the number of event listeners and improve performance, especially when dealing with large or dynamically changing DOM structures.
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;Understanding the phases of JavaScript events and event propagation is essential for effective event handling and creating dynamic web applications. By leveraging the capturing, target, and bubbling phases, you can efficiently handle events, delegate events to parent elements, control event order, and optimize performance. By mastering these concepts, you can create more interactive and responsive web experiences for your users.&lt;/p&gt;

&lt;p&gt;Remember to experiment and practice with event handling to fully grasp the potential of event phases and event propagation. Happy coding!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>HTML form to Google Sheets</title>
      <dc:creator>Lakshit</dc:creator>
      <pubDate>Sun, 03 Sep 2023 16:35:00 +0000</pubDate>
      <link>https://dev.to/penandcode/html-form-to-google-sheets-5g3d</link>
      <guid>https://dev.to/penandcode/html-form-to-google-sheets-5g3d</guid>
      <description>&lt;p&gt;Most of the frontend developers struggle with how to collect the data from the user and harder is to manage it. Some of us try to use third-party services offering trials to perform this task. &lt;br&gt;
But we have a better way to collect the data and handle it. We all use that service in our day-to-day life. The service we are going to use is Google Sheets :)&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Aren't you shocked? 😂&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Now, let's begin and here is a step-by-step tutorial for it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create a Google Sheet&lt;/strong&gt;: The first and foremost step is to create a Google Sheet. You can use this &lt;a href="https://sheet.new/" rel="noopener noreferrer"&gt;link&lt;/a&gt; to create a new spreadsheet. You can use any name to create the sheet and name the columns according to the details you want to collect data..&lt;br&gt;
   For example, if we want to collect the name, email and contact number, then we can create the columns using the fields name, email and number.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpejnudmr77oy7gmoqrb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpejnudmr77oy7gmoqrb.png" alt="Create a Google Sheets using the above method" width="558" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Create a Google Apps Script&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;-&amp;gt; Click on extensions and open Apps Script from the dropdown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flewlgrgu5aost4c6keqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flewlgrgu5aost4c6keqe.png" alt="Open App Script from the Extensions" width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; Now, rename the project name to: &lt;code&gt;Submit Form to Google Sheets&lt;/code&gt;. Make sure you are using the same name in order to avoid bugs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flskxxh3wf9hz8x8yo5qy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flskxxh3wf9hz8x8yo5qy.png" alt="Rename the Project Name" width="557" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; After renaming, now delete the definition of empty function &lt;code&gt;myFunction()&lt;/code&gt;. The IDE should be empty now.&lt;br&gt;
  -&amp;gt; Now, paste the code given below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var sheetName = 'Sheet1'
var scriptProp = PropertiesService.getScriptProperties()

function intialSetup () {
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
  scriptProp.setProperty('key', activeSpreadsheet.getId())
}

function doPost (e) {
  var lock = LockService.getScriptLock()
  lock.tryLock(10000)

  try {
    var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
    var sheet = doc.getSheetByName(sheetName)

    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
    var nextRow = sheet.getLastRow() + 1

    var newRow = headers.map(function(header) {
      return header === 'timestamp' ? new Date() : e.parameter[header]
    })

    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])

    return ContentService
      .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
      .setMimeType(ContentService.MimeType.JSON)
  }

  catch (e) {
    return ContentService
      .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
      .setMimeType(ContentService.MimeType.JSON)
  }

  finally {
    lock.releaseLock()
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Run the Setup&lt;/strong&gt;: After adding the code in the above step, now we have to run the setup and give some authorizations.&lt;br&gt;
-&amp;gt; For this, we have to Click on the Run after selecting the initialSetup.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvwjnnqw6apf36pq50i3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvwjnnqw6apf36pq50i3u.png" alt="image" width="663" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; It'll give us a popup to ask for Review permissions:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7hkrwmpqomlg3yzf9fc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7hkrwmpqomlg3yzf9fc.png" alt="image" width="615" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt;   It might show you some warning like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft14xr2pworrz5xdut1p5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft14xr2pworrz5xdut1p5.png" alt="image" width="800" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; But we have to click on advanced and allow it to go further and it'll ask for few permissions, we have to click on allow.&lt;/p&gt;

&lt;p&gt;-&amp;gt; If we are getting this type of result on screen, then it means that the setup is successful:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qdxx8c218721ajbwj3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qdxx8c218721ajbwj3i.png" alt="image" width="654" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;After making all the , we need to run the &lt;code&gt;doPost()&lt;/code&gt; on the submission of the form and for that thing, we have to add a trigger.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;4. Add a trigger&lt;/strong&gt;: In order to add a trigger, we need to follow these steps:&lt;br&gt;
  -&amp;gt; Go to triggers, on the left sidebar and click on it and then, click on &lt;code&gt;add a new trigger&lt;/code&gt;.&lt;br&gt;
  -&amp;gt; In the &lt;code&gt;Choose which function to run&lt;/code&gt;, select &lt;em&gt;doPost&lt;/em&gt; and in &lt;code&gt;Select event source&lt;/code&gt;, select From &lt;em&gt;spreadsheet&lt;/em&gt; and in &lt;code&gt;Select event type&lt;/code&gt;, select &lt;em&gt;On form submit&lt;/em&gt;.&lt;br&gt;
   &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxn7qls5j1cw7fouwq3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxn7qls5j1cw7fouwq3j.png" alt="image" width="800" height="711"&gt;&lt;/a&gt;&lt;br&gt;
  -&amp;gt; Click on save and then, it may ask you for permission review again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Deploy the project&lt;/strong&gt;: After making all the required configuration, we need to deploy our project.&lt;br&gt;
   -&amp;gt; Select &lt;code&gt;Web App&lt;/code&gt; in Select type:&lt;br&gt;
   &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff68zk1gpvcugyba6qml6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff68zk1gpvcugyba6qml6.png" alt="image" width="800" height="628"&gt;&lt;/a&gt;&lt;br&gt;
   -&amp;gt; Then, in the field of access, select &lt;code&gt;Anyone&lt;/code&gt;.&lt;br&gt;
   &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltuh4jnq6ykjar5v40gw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltuh4jnq6ykjar5v40gw.png" alt="image" width="674" height="100"&gt;&lt;/a&gt;&lt;br&gt;
   -&amp;gt; Now, you'll recieve a link similar to this, copy it and store it at secure place:&lt;br&gt;
   &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0er3so8wi9jsgpyqzx1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0er3so8wi9jsgpyqzx1.png" alt="image" width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. HTML form&lt;/strong&gt;: Open the &lt;code&gt;index.html&lt;/code&gt; and paste the code for the form and form handling:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      &amp;lt;form name="submit-to-google-sheet"&amp;gt;
      &amp;lt;input name="name" type="text" placeholder="Name" required&amp;gt;
      &amp;lt;input name="email" type="email" placeholder="Email" required&amp;gt;
      &amp;lt;input name="number" type="number" placeholder="Number" required&amp;gt;
      &amp;lt;button type="submit"&amp;gt;Send&amp;lt;/button&amp;gt;
      &amp;lt;/form&amp;gt;

      &amp;lt;script&amp;gt;
      const scriptURL = '&amp;lt;SCRIPT URL&amp;gt;'
      const form = document.forms['submit-to-google-sheet']

      form.addEventListener('submit', e =&amp;gt; {
      e.preventDefault()
      fetch(scriptURL, { method: 'POST', body: new FormData(form)})
      .then(response =&amp;gt; console.log('Success!', response))
      .catch(error =&amp;gt; console.error('Error!', error.message))
      })
      &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you can test your form and check the output in the Google sheets.&lt;/p&gt;

</description>
      <category>google</category>
      <category>form</category>
      <category>html</category>
      <category>trick</category>
    </item>
    <item>
      <title>Mastering JavaScript DOM Manipulation: innerText vs innerHTML vs textContent</title>
      <dc:creator>Lakshit</dc:creator>
      <pubDate>Sat, 26 Aug 2023 18:45:00 +0000</pubDate>
      <link>https://dev.to/penandcode/innertext-vs-innerhtml-vs-textcontent-42cl</link>
      <guid>https://dev.to/penandcode/innertext-vs-innerhtml-vs-textcontent-42cl</guid>
      <description>&lt;p&gt;Most of us use &lt;strong&gt;innerText&lt;/strong&gt;, &lt;strong&gt;innerHTML&lt;/strong&gt;, and &lt;strong&gt;textContent&lt;/strong&gt; daily, but we don't know the actual difference between them. These three methods are often used for manipulating text content within the HTML elements. In this blog, we'll be exploring the differences between them.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Let us try to understand it using an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;
    &amp;lt;title&amp;gt;innerText vs innerHTML vs textContent&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

    &amp;lt;div&amp;gt;Hello World!&amp;lt;/div&amp;gt;

    &amp;lt;div id="root"&amp;gt;
      //Content to be added by methods.
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;

    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;/html&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;br&gt;
Initially, our code is giving this as output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmarkbv5ya0t57fi4mhc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgmarkbv5ya0t57fi4mhc.png" alt="Output without DOM methods" width="376" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;br&gt;
Now, let us one by one use these methods and explore the differences between the three - &lt;strong&gt;innerText&lt;/strong&gt;, &lt;strong&gt;innerHTML&lt;/strong&gt;, and &lt;strong&gt;textContent&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Let us take &lt;strong&gt;innerHTML&lt;/strong&gt; first:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;innerHTML&lt;/strong&gt; returns everything inside it including all HTML elements, child tags, and text content and it is used to add HTML to the element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
        let root = document.getElementById("root")
        root.innerHTML = `
        &amp;lt;p&amp;gt;The content is added using innerHTML method.&amp;lt;/p&amp;gt;`

        console.log(root.innerHTML);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;innerHTML&lt;/strong&gt; method gives the following output:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5t71off6me115ep5vn64.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5t71off6me115ep5vn64.png" alt="Output for innerHTML" width="428" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flnzxq03fm8wphl3ilxs9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flnzxq03fm8wphl3ilxs9.png" alt="Console output for innerHTML " width="524" height="41"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Now, let's take the &lt;strong&gt;innerText&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;innerText&lt;/strong&gt; returns the text that is visible on the screen means it excludes hidden text and the tags. It shows the text as it is visible on the screen. It excludes the hidden text and the HTML tags. It is used to add the text to an element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
        let root = document.getElementById("root")
        root.innerText = `The content is added using innerText and
        it takes text as we want to display it on screen.`
        console.log(root.innerText);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;   &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;innerText&lt;/strong&gt; method gives the following output:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ld4mv54tsfm7ndx4rbl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ld4mv54tsfm7ndx4rbl.png" alt="Output for innerText" width="405" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6x4xbx1mbn0zh79u0it.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6x4xbx1mbn0zh79u0it.png" alt="Console output for innerText " width="436" height="50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;   &lt;/p&gt;

&lt;p&gt;Now, it's turn for &lt;strong&gt;textContent&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;textContent&lt;/strong&gt; returns complete text including the hidden text and hidden HTML tags. It shows exactly as the code is laid out in the source code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        let root = document.getElementById("root")
        root.textContent = `The content is added using textContent 
        and it gives the output as a text only no matter 
        if we are adding multiple blank spaces or 
        adding content in next line.`
        console.log(text.textContent);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;textContent&lt;/strong&gt; method gives the following output:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdn5o2nqkojecpw65rsui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdn5o2nqkojecpw65rsui.png" alt="Output for textContent" width="800" height="57"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqyyb5mnmuavzs8s9fb3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqyyb5mnmuavzs8s9fb3.png" alt="Console output for textContent " width="565" height="79"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Deciding among innerText, innerHTML, and textContent relies on your particular use scenario. Every property exhibits unique behaviors concerning HTML interpretation, safety, and perceptibility. Grasping these distinctions empowers you to adeptly manage text content within the DOM, ensuring code security and user experience preservation.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Mastering JavaScript DOM Manipulation: append() vs appendChild()</title>
      <dc:creator>Lakshit</dc:creator>
      <pubDate>Sat, 19 Aug 2023 16:14:08 +0000</pubDate>
      <link>https://dev.to/penandcode/append-vs-appendchild-2o78</link>
      <guid>https://dev.to/penandcode/append-vs-appendchild-2o78</guid>
      <description>&lt;p&gt;Most of us face issues while understanding the concept of &lt;strong&gt;append&lt;/strong&gt; and &lt;strong&gt;appendChild&lt;/strong&gt;. Some of us also think that &lt;strong&gt;append&lt;/strong&gt; adds the element to the adjacent while &lt;strong&gt;appendChild&lt;/strong&gt; adds the element to child. First of all, I would like to burst this myth. Both append as well as appendChild, adds the elements as a child only.&lt;/p&gt;

&lt;p&gt;Then, what's the difference between them Or is there any difference between them?&lt;/p&gt;

&lt;p&gt;Yes, there are a few differences. Let us take a look over them one by one:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-&amp;gt;&lt;/strong&gt; append method takes Node Objects as well as DOM Strings as input while appendChild supports Node Objects only.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;body&amp;gt;
    &amp;lt;div id="container"&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;h1&amp;gt;Fruits list:&amp;lt;/h1&amp;gt;&amp;lt;!--Let's create a create a list for fruits list--&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;
        let con = document.getElementById("container"); //Accessing the container to append the list.
        let list = document.createElement("ul") //Creating the list
        list.innerHTML = `
            &amp;lt;li&amp;gt;
                &amp;lt;p&amp;gt;Apple&amp;lt;/p&amp;gt;
            &amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;
                &amp;lt;p&amp;gt;Banana&amp;lt;/p&amp;gt;
            &amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;
                &amp;lt;p&amp;gt;Litchi&amp;lt;/p&amp;gt;
            &amp;lt;/li&amp;gt;`
        con.append(list) //Using append method works fine
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Using append method&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;body&amp;gt;
    &amp;lt;div id="container"&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;h1&amp;gt;Fruits list:&amp;lt;/h1&amp;gt;&amp;lt;!--Let's create a create a list for fruits list--&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;
        let con = document.getElementById("container"); //Accessing the container to append the list.
        let list = document.createElement("ul") //Creating the list
        list.innerHTML = `
            &amp;lt;li&amp;gt;
                &amp;lt;p&amp;gt;Apple&amp;lt;/p&amp;gt;
            &amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;
                &amp;lt;p&amp;gt;Banana&amp;lt;/p&amp;gt;
            &amp;lt;/li&amp;gt;
            &amp;lt;li&amp;gt;
                &amp;lt;p&amp;gt;Litchi&amp;lt;/p&amp;gt;
            &amp;lt;/li&amp;gt;`
        con.appendChild(list) //Using appendChild method works fine
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Using appendChild method&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If we run both the codes, they are gonna give us same output. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fauu8mm8zib17zzf3u5mw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fauu8mm8zib17zzf3u5mw.png" alt="Output of appendChild and append for Node Object" width="350" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But as soon as we try to add some string using both the methods, append works fine but appendChild shows error in console.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;body&amp;gt;
    &amp;lt;div id="container"&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;h1&amp;gt;Fruits list:&amp;lt;/h1&amp;gt;&amp;lt;!--Let's create a create a list for fruits list--&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;
        let con = document.getElementById("container"); //Accessing the container to append the name.
        con.append("Apple") //Works fine
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;append method gives the following output:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fav1upcxudkzwnu679yiu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fav1upcxudkzwnu679yiu.png" alt="Output of append for DOM String" width="274" height="137"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;body&amp;gt;
    &amp;lt;div id="container"&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;h1&amp;gt;Fruits list:&amp;lt;/h1&amp;gt;&amp;lt;!--Let's create a create a list for fruits list--&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;
        let con = document.getElementById("container"); //Accessing the container to append the name.
        con.appendChild("Apple") //Throws error
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;appendChild method give the following output:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqk41v9cgyfpx012bau04.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqk41v9cgyfpx012bau04.png" alt="Output of appendChild for DOM String" width="313" height="147"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Along with that it gives error in console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbl95ymmrtlw8d94mv31.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbl95ymmrtlw8d94mv31.png" alt="Error message" width="705" height="65"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-&amp;gt;&lt;/strong&gt; append method can take more than one arguments while appendChild supports only one.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let p = document.createElement("p");
p.innerHTML = "Cat"
con.append(list, p) //Using append method works fine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;append shows the following result:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vfk03pxa3qb02q14bxy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vfk03pxa3qb02q14bxy.png" alt="append result for multiple arguments" width="316" height="295"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let p = document.createElement("p");
p.innerHTML = "Cat"
con.appendChild(list, p) //Using appendChild method appends the first element and ignores the rest.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;appendChild give the following result:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpz8m8zw7xcxzgclpp8r7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpz8m8zw7xcxzgclpp8r7.png" alt="appendChild result for multiple arguments" width="294" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;-&amp;gt;&lt;/strong&gt; appendChild gives a return value but append doesn't.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(con.append(list))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;append gives us result as &lt;strong&gt;undefined&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo376ezrmt8j0hp0q6ktc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo376ezrmt8j0hp0q6ktc.png" alt="append result on logging" width="373" height="29"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(con.appendChild(list))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;appendChild gives us result as &lt;strong&gt;DOM element&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5crh2tpnk2a8pe57qbf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5crh2tpnk2a8pe57qbf5.png" alt="appendChild result on logging" width="800" height="117"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In modern development, "append" is more oftenly used due to it's flexibility and it's ability to append multiple elements at once. Although, "appendChild" is still useful when we are targetting to old browsers primarily.&lt;/p&gt;

</description>
      <category>html</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
