Menu

Monday, October 19, 2020

Basic Fundamental of javascript

//------------************ app.js*********************
// // //Variable- Most basic cbuilding block
// // //Variables-Store,Access, Modify== Value
// // //Declare,Assignment ,Operator and Assign value

// // //let name; - with assigning name value- it will show undefined . To fix this add empty string as below
// // let name="Bal Mukund Bangalore";
// // let address,zip,state;
// // console.log(address);

// // //Assign value later
// // address = "Maruthi Layout, AECS Layout"
// // zip = 560037;
// // state = "karnatka";
// // console.log(address,zip,state);

// // //Modify exisitng
// // name = "Barnali Sarmah"
// // console.log(name);

// // // Naming convention for variable
// // //can contain digits,letters,underscore,$
// // //must start with letter, $ or underscore - can not start with number
// // //camelcase or underscore
// // //case sensitive -fullname vs Fullname
// // //let 1name= "Bal"; //  Error- an identifier or keyword can not immediately follow a numeric literal(invalid or unexpected token)
// // //let let name ="Bal" // Error - let is disallowed as a lexically bound name
// // // javascript stops executing if there is an error in earlier line
// // //console.log(fullName) // if variable is not define but trying to print/access , throws error - Uncaught ReferenceError : fullName is not defined

// // //-----*****Number data type******------////
// // //Loose Typed = don't declare type
// // //Number displayed in console should be in blue
// // let number = 34;
// // let pants =2.45;
// // pants ='are great';
// // number +=10; // Add 10 in number value
// // console.log(pants);
// // console.log(number);

// // // Any input value from html element - by default captures as string

// // //----Data types- **** ---//
// // //Primitive - String,Number,Boolean,Null,Undefined,symbol
// // //String
// // const text1 ='some text'
// // //Number
// // const a= 5;
// // //Boolean
// // let value1=true;
// // //null
// // const result1 =null;

// // //undefined
// // let y;

// // //Object - Arrays, Functions , Objects

// // //Array -[] ,0 index based
// // const friend = ['john','peter','Rashmi',45,undefined,null]
// // let bestFriend =friend[2];
// // friend[1] = "Rohan";
// // console.log(friend[1]);

// // //function
// // //function declaration
// // function hello(){
// //     console.log("hello"+ friend[0]);
// // }

// // hello();//call/invoke function hello

// // //parameter/argument of function
// // //sample - greet only Rasmhmi
// // function greet(name) // no need to pass data type under argument. Also argument under parenthesis is local variable
// // //name variable can not be accessed outside this function
// // {
// //     console.log('Hello there ' +name);
// // }
// // console.log('Hello there ' +name);

// // greet("Bob");
// // greet("Ana");

// // //two arguments
// // function greet(name,second)
// // {
// //     console.log(second);
// //     console.log("Hello there" +name);
// // }
// // greet('peter ', 'rashmi');

// // //function Expression
// // const add =function(a,b){ // without name of function is anonymous function
// // //const add =function sum(a,b)    {return a+b;} //function expression with name of function

// //     return a+b;
// // }
// // //Invoke- function with name
// // const thirdValue= add(5,6) // Any new vriable with any name and pass the value under variable name i.e add here

// // //Objects
// // // Objects- key/value pairs methods
// // //dot notation

// // //Example:
// // const person={
// //     name:'Bal',
// //     age: 40,
// //     lastName :'Mukund',
// //     education: false,
// //     married: true,
// //     siblings:['anand','Manish'], //multivalue property i.e array (same sytax as array)
// //    // In ESC6 - below functio can also be added without keyword function keyword -directly by function name
// //    //i.e greeting(){}
// //     greeting: function(){ //function under property name . Can add name of function or keep it anonymous as it is
// //         console.log("Hello my name is Bal Mukund"); //statement ends with semi colon
// //     },

// // };
// // //method - calling function (part of object) by dot notation is called as method as below-
// // person.greeting(); //calling function i.e object method
// // console.log(person.lastName);//accessing object propery

// // //assign object propery to new variable
// // const age= person.age;
// // console.log(age); // access new variable

// // //type of - operator (type of variable) or (type of value)

// // //const x =5;
// // //console.log(typeof x);
// // //console.log(typeof 5);

// // // -------------------------------------------------------------
// // // COnditional logic
// // // If
// // const value =2; //assign variable
// // const num2 =10;
// // if(value){ //boolean i.e value =2 ,true or false. Since value =2 is assigned it will set true and execute statement under if otherwise else
// //     console.log("if condition holds true")
// // }
// // else{
// //     console.log("if condition is false")
// // }
// // //If condition for two variable comparison
// // //Important note: else condition is set (if condition false ) no matter whether else condition is applicable or not(i.e else will always execute if(if condition) fails)
// // if(value>num2){
// //     console.log(value + " is greater than "+ num2);
// // }
// // else{
// //     console.log(num2 +" is greater than " + value)
// // }

// // // !(not condition)
// // const value3 =true;

// // if(!value3){
// //     console.log("Value is true");
// // }
// // else{
// //     console.log("value is false");
// // }

// // // Equality operator
// // // ==(double equal) checks for equal value
// // //===(triple equal) checks for data type and equal value
// // //double = example below
// // const equalCheck = 10;
// // const equalCheck2= "10"
// // if(equalCheck == equalCheck2){
// //     console.log(equalCheck2 +" is equal to(using double equal==) " +equalCheck)
// // }
// // else{
// //     console.log(equalCheck2 +" is NOT equal to(using double equal ==) " +equalCheck)
// // }

// // //triple equal example below
// // const equalCheck3 = 10;
// // const equalCheck4= "10"
// // if(equalCheck3 === equalCheck4){
// //     console.log(equalCheck3 +" is equal to(using ===) " +equalCheck4)
// // }
// // else{
// //     console.log(equalCheck3 +" is NOT equal to (using triple equal ===)" +equalCheck4)
// // }

// // // Logical Operators
// // // (|| - OR), (&& - AND)
// // //OR(||) operator

// // const fullName ="peter";
// // const ageInYears =24;

// // if(fullName=='bob' || ageInYears=='24'){
// //     console.log('hello there user');
// // }
// // else{
// //     console.log("wrong values");
// // }

// // //AND(&&) operator

// // if(fullName!=='bob' && ageInYears==='24'){
// //     console.log('hello there user');
// // }
// // else{
// //     console.log("wrong values");

// // }

// // // String properties and methods
// // // wrapper String Object, don't memorize methods
// // let text = ' Peter Jordan';
// // let result = text.length;
// // console.log(result);

// // console.log(text.length);
// // console.log(text.toLowerCase());
// // console.log(text.toUpperCase());
// // console.log(text.charAt(0));
// // console.log(text.charAt(text.length - 1));
// // console.log(text.indexOf('e'));
// // console.log(text);
// // console.log(text.trim());
// // console.log(text.trim().toLowerCase().startsWith('peter'));
// // console.log(text.includes('eter'));
// // console.log(text.slice(0, 2));
// // console.log(text.slice(-3));

// // // const person = {
// // //   name: 'peter', // property
// // //   greeting() {
// // //     // method
// // //     console.log("Hey, I'm Peter");
// // //   },
// // // };

// // // console.log(person);

// // // console.log(person.name);
// // // person.greeting();

// // //------------------*********-------------------------------
// // // Template Literals - ES6+
// // //Back-tick characters -``(above tab)
// // //interpolation ${} - insert expression(value)

// // const name1 ="Mukund";
// // const age1 = 34;
// // //use template literals
// // const value2=`Hey it's ${name1} and my age is ${age1}`;
// // //without using template literals -traditional way
// // //const value2="Hey it's " +name+ " and my age is " +age
// // console.log(value2);

// // // Arrays and for loop
// // const names = ['Mukund','Barna','Briti'];
// // const lastName = 'Sarmah';

// // let newArray=[];

// // //for loop
// // for(let i=0;i<names.length;i++){
// //     //console.log([i]);
// //     console.log(`My full name is ${names[i]} ${lastName}`);
// //      //console.log("My full name is" +names[i]+ " "+lastName);

// // }

// // //Function,return,if ,arrays,loop . Usecase: Calculate total of all the bills
// // //Define array for grocery bill
// // const grocery =[10,90,200,78,900,310,445,657];
// // const medicines =[575,240,350,650,750,200];
// // const cab=[150,250,675,85]

// // function billTotal(listItems){
// //     let total=0;
// //     for(i=0;i<listItems.length;i++){
// //         total = total+listItems[i]
// //     }
// //     return total;
// // }

// // const groceryTotal=billTotal(grocery);
// // const medicineTotal=billTotal(medicines);
// // const cabTotal=billTotal(cab);

// // console.log({

// //     grocery : groceryTotal,
// //     medicine: medicineTotal,
// //     cab: cabTotal
// // }

// // )

// // // Null and undefined , both represent "no value"
// // //undefined- "javascript can not find value for this"
// // //variables without value
// // //missing function argument
// // //missing object properties

// // //null -developer sets the value

// // let number4 = 20 + null;//20+0;
// // console.log(number4);

// // let number5= 20 + undefined;//20 + 0;
// // console.log(number5);

// // //Variable lookup
// // //{} - code block variable
// // //global variable

// // const globalNumber =5;

// // function sum(num1,num2){
// //     const globalNumber =20;
// //     const result= num1 + num2 + globalNumber;//Javascript starts use of local variable. If local variable not found then pick global variable
// //     return result;
// // }
// // console.log(sum(3, 4));

// //Functions are first call objects-stored in a variable(expression),passed as an argument to another function ,return from the function
// //callback function, Higher order function i.e call function with argument as function
// //function getting passed is callback function.
// //Higher order function- accepts another function as argument(returns another function as result)
// // Thumb rule- Higher order function should not be modified . Instead create new callback function

// //callback function
// function morning(name9) {
//   //callback function
//   return `Good Morning ${name9}`;
//   console.log(`name`);
// }

// function afternoon(name9) {
//   //callback function
//   return `Goood Afternoon ${name9}`;
// }

// function evening(name9) {
//   //call back function
//   return `Goood Evening ${name9}`;
// }

// //Higher order function
// function greet(name9, cb) {
//   //argument passed as cb i.e function. During invoking morning function(callback) is passed
//   const myName = "Mukund";
//   console.log(`${cb(name9)}, my name is ${myName}`);
// }

// greet("bobo", morning);
// greet("Mukund", afternoon);
// greet("Brti", evening);

// //powerful Array methods - forEach,filter,find,reduce
// //Iterate over array- no for loop required
// //Accept CALLBACK function as argument ,calls callback against each item in array .Reference item in callback parameter
// //forEach - does not return new array

// const group = [
//   { name: "Adam ", age: 34, profession: "Content Writer" },
//   { name: "Rod ", age: 34, profession: "Model" },
//   { name: "Steve ", age: 3, profession: "Manager" },
// ];

// const people = [
//   { name: "John ", age: 34, profession: "private", salary: 10000 },
//   { name: "Rod ", age: 34, profession: "Software", salary: 5000 },
//   { name: "Susy ", age: 3, profession: "Government", salary: 900 },
// ];

// function showPerson(person) {
//   // for manipulation on variable within function- pass argument
//   console.log(`My name is ${person.name} and my age is ${person.age}`);
// }

// people.forEach(showPerson);
// // map - returns a new array
// //does not change size of original array

// const ages = people.map(function (person) {
//   return person.age + 10;
// });
// console.log(ages);

// //create variable of object type
// const newPeople = people.map(function (person) {
//   return {
//     firstName: person.name.toUpperCase(),
//     oldAge: person.age + 20,
//     Job: person.profession,
//   };
// });

// console.log(newPeople);

// const names = people.map(function (person) {
//   return `<h1>${person.name}</h1>`;
// });
// document.body.innerHTML = names.join("");
// console.log(names);

// //-------------
// //Continue after Map--
// //------------
// // filter - does return a new array
// //can manipulate the size of array
// //return based on condition - if condition does not match then empty array
// const youngpeople = people.filter(function (person) {
//   return person.age >= 25;
// });

// const job = people.filter(function (post) {
//   return post.profession == "Software" || post.profession == "private";
// });

// console.log(job);

// console.log(youngpeople);

// //find -returns single instance(in this case object)
// //returns first match if condition is true , else returns undefined
// //great for getting unique value
// const devInstnace = people.find(function (instance) {
//   return instance.age >= 25;
// });

// console.log(devInstnace);
// console.log(devInstnace.name);

// //reduce method - reduces to single value -number,array ,object
// // 1 parameter ('acc') - total of all calculations(initial value)
// //2 parameter('curr') - current iteration/value

// const totalSaray = people.reduce(function (acc, currentItem) {
//   //two parameteers, acc for initialization and currentItem for current Value

//   acc += currentItem.salary;
//   return acc;
// }, 0); //,o is to initialize with zero
// console.log(`Total salary is ${totalSaray}`);

// //Math Object - Standard built in object
// const number1 = 5.66;
// const roundNum = Math.floor(number1);

// console.log(roundNum);
// const randomLast = Math.abs(Math.floor(Math.random() * 6) + 1); //range always remains till tcounts.Fix this.what bout if I want to make from 1 to 6 only

// console.log(`Ludo ${randomLast}`);

// //Date - global Object
// days = [
//   "Sunday",
//   "Monday",
//   "Tuesday",
//   "Wednesday",
//   "Thursday",
//   "Friday",
//   "Saturday",
// ];
// months = [
//   "Jan",
//   "Feb",
//   "March",
//   "Apr",
//   "May",
//   "June",
//   "July",
//   "Aug",
//   "Sep",
//   "Oct",
//   "Nov",
//   "Dec",
// ];
// const date = new Date();
// console.log(date);
// //All Date method returns the value in number form i.e 1,2,3
// day = date.getDay();
// date1 = date.getDate();
// month = date.getMonth();
// hour = date.getHours();
// minute = date.getMinutes();
// second = date.getSeconds();
// check = date.toLocaleString();
// clock = `Today is ${days[day]} ,${date1} ${months[month]} and time is ${hour} : ${minute} : ${second} `;
// console.log(clock);
// document.writeln(clock);
// console.log(`Locale String check ${check}`);

// //----------------------------*****************-------------------------------------
// //Document Object Model
// //Similar to CSS - select element or group of elements that you want to affect
// //Decide the effect we want to apply to the selection
// //Many different ways-

// document.body.style.backgroundColor = "blue";
// //select element
// //document.getElementById('btn').style.color='yellow';
// //select element using css-query selector
// //document.querySelector('element').style.color='red';
// //assign element to variable once and apply the effect whenver want
// //const element1=document.querySelector('element');
// //const element2=document.querySelectorAll('element');
// //window object of browser not object of javascript. window is current open tab
// //console.log(window);
// //retuns a node or nodelist(array like object)
// //to get nodeName
// //const list1= btn.nodeName;
// //console.log(list1);
// //TO access window method say - alert , it should be written as below
// //window.alert("hello");
// //however if javascript does not find method it always look in window object
// //alert("hello");

// //To find attribute and method of node use dir(method) of console to node as below
// //console.dir(document);

// //------------------------*********Navigate the DOM-Children ******************----------------
// //childNodes - returns all childNodes including white space which is treated as text node. Examples: NodeList(8) [h1, h1, h1, text, comment, text, script, text]
// //children
// //firstChild
// //lastChild
// //Important note- node selection,append,removal happens on page rendered element and not necessarily the html element in file
// const result1 = document.querySelector("h1");
// const parent = result1.parentElement.parentElement;
// parent.style.color = "red"; // Applies color to parent element
// console.log(result1);
// console.log(result1.parentElement);
// console.log(result1.parentElement.parentElement);
// console.log(result1.children);
// console.log(result1.childNodes);

// //prviousSibling,nextSibling - (can return whitespace too) extract the previous or next sibling of selected element
// //previousElementSibling ,nextElementSibling(does not retun whitespace)
// // const first = document.querySelector("h1");
// // const third = first.nextSibling;
// // third.style.color = "pink";
// // const fourth = third.nextSibling;
// // const prevFourth = fourth.previousSibling;

// console.log(third);
// console.log(fourth);
// console.log(prevFourth);
// console.log(third.nextElementSibling);

// //nodeValue and textContent - to display text content
// console.log(fourth.childNodes[0].nodeValue); //nodeValue gets applied on specific node(if node value present)
// console.log(fourth.firstChild.nodeValue);
// console.log(third.textContent); //displays text of element/node

// //getAttribute, setAttribute - extract or set attribute of element(i.e class ,id,href etc)

// //const headerAll = document.querySelectorAll('h1');
// //const idValue=headerAll.getAttribute('id');//extracting id of headerAll element

// //console.log(headerAll);
// fourth.setAttribute("id", "last"); //setting id to list item
// fourth.setAttribute("class", "last"); //setting class to list item

// //classList(append class), className(override class)- Add/apply css class to element dynamically
// const findClass = fourth.className;
// console.log(findClass);

// fourth.classList.add("red", "blue"); //append class addition to what defined. Also append multiple class with comma separated value
// console.log(fourth.classList);
// fourth.classList.remove("blue"); //remove class from element
// //check if class is present or not for an element - classList.contains
// const result = fourth.classList.contains("last");
// if (result) {
//   console.log("Verified- last class is present");
// }

// //fourth.className='red'; //overrides class
// console.log(fourth.className);

// //createElement(element),createTextNode(text content),appendChild
// // const emptyElement = document.createElement("div"); //create blank div .

// //create text node
// // const textNode = document.createTextNode(
// //   "This is simple text node created by createTextNode"
// // );

// // emptyElement.appendChild(textNode); //attch text node newly created div
// //document.body.appendChild(emptyElement); //attach the text+div to html i.e document attached last element

// //appendChild to an element instead of body
// fourth.appendChild(emptyElement);

// // If want to add element before another element
// //insertBefore('element','location')
// // const heading5 = document.createElement("h1");

// // const text = document.createTextNode("adding h1 element");
// // heading5.appendChild(text);

// // document.body.insertBefore("heading5", "fourth");

// //innerText,prepend
// const heading6 = document.createElement("h2");
// heading6.innerText = `I am dynamic heading`;
// document.body.prepend(heading6);

// //remove,removeChild
// const headingResult = document.querySelector(".last");
// const result2 = headingResult.querySelector("div");
// console.log(result2);
// //result2.remove(); // removes the result2 from document i.e div is removed
// //headingResult.removeChild(result2); //removes the child i.e div element only from last class element

// //innerHTML,textContent
// console.log(result2.textContent);
// console.log(headingResult.innerHTML);
// const ul = document.createElement("ul");
// ul.innerHTML = ` <li class="item"> First link</a></li>
//             <li class="item">Second link</a></li>
//             <li class="item">Third link</a></li>`;
// document.body.appendChild(ul);

// //--------------*******----------------------------------
// //Change CSS with style property
// const randomList = document.querySelectorAll(".item");
// //randomList.style.color = "green";

// randomList.forEach(function changeColor() {
//   randomList[1].style.color = "green";
// });

// //--------------*******-----------
// //Events
//---------------------------------
//Events overview-
//1. Select event
//2.add event listener(pass argument)
//3. what event and what to do
//Click Event
const btn = document.querySelector(".btn");

//aonymous call back function
//btn.addEventListener("click", function () {
//btn.classList.add("blue");
// btn.style.backgroundColor = "green";
//});

//function reference
function changeColor() {
  let hasClass = btn.classList.contains("red");
  if (hasClass) {
    btn.style.color = "green";
  } else {
    btn.classList.add("blue");
  }
}
btn.addEventListener("click", changeColor);
//Mouse Events
//click - fires after full action occurs
//mousedown - button is pressed
//mouseup - button is released
//mouseenter - mouse on to an element
//mouseleave - moved out of an element
btn.addEventListener("click", function () {
  console.log("You clicked me");
});
// btn.addEventListener("mousedown", function () {
//   console.log("You mousedown");
// });

btn.addEventListener("mouseup", function () {
  console.log("You mouseup");
});
btn.addEventListener("mouseenter", function () {
  btn.classList.add("blue");
});
btn.addEventListener("mouseleave", function () {
  btn.classList.remove("blue");
});

//Key Events
//keypress - when key is pressed
//keydown - when key is down
//keyup - when key is up
const nameInput = document.getElementById("name");
console.log(nameInput);
nameInput.addEventListener("keypress", function () {
  nameInput.classList.add("red");
});

// nameInput.addEventListener("keydown", function () {
//   nameInput.classList.add("blue");
// });

nameInput.addEventListener("keyup", function () {
  nameInput.classList.add("red");
  console.log(nameInput.value);
});

//---------------------------------------------------------------------
//Event Object - event object argument e,evt
//info about trigger event
//event.type
//event.currentTarget
//this keyword
//preventDefault() - prevents default behavior

//const heading1 = document.querySelector("h1");
const link = document.getElementById("link");
btn.addEventListener("click", function (event) {
  event.currentTarget.classList.add("red"); //same behavior as btn.classList.add("red") , we can also traverse elemenTarget
  console.log(event.type);
  console.log(this); //this keyword does not work with arrow function
});

function someFunc(e) {
  console.log("link clicked");
  //e.preventDefault(); //usually done for page refresh(form submission) or link click to prevent default behavior
}

link.addEventListener("click", someFunc);

//currentTarget  vs target
//currentTarget - always refers to element to which event handle has been attached to(nested element will get impacted)
//target - identifies the element on whichevent has occured

//---------****************-------------------------------------------
//Javascript Event propogation: Bubbling and capturing
//allows select dynamic elements - fire event without selecting the element
//event propogation - order of events are fired
//event bubbling -clicked element first then bubbles up -default
//event capturing - fires at the root and fires until reaches target
const container = document.querySelector(".container");

const list = document.querySelector(".list-items");

function showBubbling(e) {
  console.log("current Target", e.currentTarget);
  console.log("Target is ", e.target);

  //check if selected/clicked element is link-
  if (e.target.classList.contains("link")) {
    console.log("link clicked");
  }
}
function stopPropogation() {
  console.log("you fired stop propogation");
}
//list.addEventListener("click", stopPropogation); //stop bubbling
//using event listener accessing elements within that-parent or child by target or currentTarget
//always fires from lowest(nested bubble) up to chain/parent i.e always last event will fire first then container
container.addEventListener("click", showBubbling, { capture: true });
list.addEventListener("click", showBubbling, { capture: true });
document.addEventListener("click", showBubbling, { capture: true });
window.addEventListener("click", showBubbling, { capture: true }); //capture :true sets the ordering event from parent to child

//--------------******Submit Event Listener**********-----------------
//preventDefault
//how to get a value(using value property )
const form = document.getElementById("form");
const name = document.getElementById("name");
const password = document.getElementById("password");

form.addEventListener("submit", function (e) {
  e.preventDefault();
  console.log("form submitted");
  console.log(name.value);
  console.log(password.value);
});

//Locale Storage ----------**********
//Web storage API - provided by browser
//session storage(persist data while tab is open),local storage(persist between opening and closing of browser)
//setItem, getItem, removeItem,clear
localStorage.setItem("name", "john"); //second instance overrides the first instance
sessionStorage.setItem("name", "Ram");
localStorage.getItem(name);

//local storage with multiple values
//JSON.stringify() - make in to json string
//JSON.parse();
const friends = ["John", "David", "Bryce", "Kale"];
//localStorage.setItem("friends", JSON.stringify(friends)); //use JSON.stringify in array as strings

const values = JSON.parse(localStorage.getItem("friends"));

let fruits;
if (localStorage.getItem(fruits)) {
  fruits = JSON.parse(localStorage.getItem("fruits"));
} else {
  fruits = [];
}
fruits.push("apple");
console.log(fruits);


----------------------------------------------------------------------------------------------------------------------------
Refrence HTML: index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>DOM</title>
    <style>
        .red {
            background: red;
            color: white;
            text-transform: uppercase;
            font-size: 2rem;
        }

        .btn {
            background: #f15025;
            color: white;
            font-size: 1.5rem;
            text-transform: uppercase;
            border: none;
            display: inline-block;
            margin: 0.5rem;
        }

        .blue {
            background: blue;
            color: white;
            text-transform: capitalize;
            letter-spacing: 10px;
        }
        #link{
          padding: 20px -5000px;
        }
    </style>
</head>

<body>
    <form action="" id="form">
        <input type="text" id="name" />
        <input type="password" id="password" />
        <input type="submit" value="submit" />
    </form>
   
    <div class="container">
       
        <div>
        <ul class="list-items" id='list-unordered'>
            <li class="item"><a href="#" class="link">link</a></li>
            <li class="item"><a href="#" class="link">link</a></li>
            <li class="item"><a href="#" class="link">link</a></li>
        </ul>
     
    </div>
    <input type="text" id="name">
    <h1>Sample heading</h1>
      
    <a href="#" id="link" class="down-bottom">random link</a>
   <div id="btn-pr" class="btn"><button class="btn">click me</button></div>
    
    </div>


    <!-- javascript -->
    <script src="app.js"></script>
</body>

</html>





Saturday, October 17, 2020

 Error Codes:

1. If variable name starts with number below issue

Error- an identifier or keyword can not immediately follow a numeric literal(invalid or unexpected token)

let 1name= "Bal"; 

2.  if reserved keyword(let) is used twice

Error - let is disallowed as a lexically bound name

let let name ="Bal" 

// javascript stops executing if there is an error in earlier line

3. if variable is not define but trying to print/access , throws error - 

Uncaught ReferenceError : fullName is not defined

console.log(fullName) 

4. Error: Uncaught SyntaxError: Unexpected token 

Cause: syntax error in object,variable,function whatever is mentioned after Unexpected token



Target Server Side implementation using .net SDK

 Target Server Side implementation using .net SDK  This reference guide shows how Adobe Target customers can install, initialize, and use th...