Saturday 26 October 2019

Day 8: Buttons Container :- 10 Days Of Javascript HackerRank Solution

Problem:-

Objective
In this challenge, we lay out buttons inside a div and modify their labels after each click event on one of the buttons. Check out the attached tutorial for learning materials.
Task
We want to create nine buttons enclosed in a div, laid out so they form a  grid. Each button has a distinct label from  to , and the labels on the outer buttons must rotate in the clockwise direction each time we click the middle button.
Complete the code in the editor so that it satisfies the following criteria:
  • Initial State. The initial layout looks like this:
    layout
  • Element IDs. Each element in the document must have an id, specified below:
    • The button container div's id must be btns.
    • The initial innerHTML labels must have the following button ids:
    innerHTMLid
    1btn1
    2btn2
    3btn3
    4btn4
    5btn5
    6btn6
    7btn7
    8btn8
    9btn9
  • Styling. The document's elements must have the following styles:
    • The width of btns is , relative to the document body's width.
    • Each button (i.e., btn1 through btn9) satisfies the following:
      • The width is , relative to its container width.
      • The height is 48px.
      • The font-size is 24px.
  • Behavior. Each time btn5 is clicked, the innerHTML text on the grid's outer buttons (i.e., bt1btn2btn3btn4btn6btn7btn8btn9) must rotate in the clockwise direction. Do not update the button id's.
The .js and .css files are in different directories, so use the link tag to provide the CSS file path and the script tag to provide the JS file path:
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" href="css/buttonsGrid.css" type="text/css">
    </head>
    
    <body>
     <script src="js/buttonsGrid.js" type="text/javascript"></script>
    </body>
</html>
Explanation
Initially, the buttons look like this:
initial
After clicking btn5  time, they look like this:click1
After clicking btn5  more time (for a total of  clicks), they look like this:click2

Solution:-


buttonGrid.css

.btns {
  width: 75%;
  position: relative;
}

.btn {
  width: 30%;
  height: 48px;
  font-size: 24px;

}

buttonGrid.js

class Rotator {
    constructor(values) {
    this.values = values;
  }

  rotation() {
    this.values.unshift(this.values.pop());
  }

  round() {
    this.rotation();
    this.render();
  }

  render() {
    const [btn1, btn2, btn3, btn6, btn9, btn8, btn7, btn4] = this.values;
    const hashTable = {btn1, btn2, btn3, btn6, btn9, btn8, btn7, btn4};

    for (const key in hashTable) {
      document.getElementById(key).innerHTML = hashTable[key];
    }
  }
}

document.addEventListener('DOMContentLoaded', () => {
  const rotator = new Rotator([1, 2, 3, 6, 9, 8, 7, 4]);
  rotator.render();
  document.getElementById('btn5').addEventListener('click', () => { rotator.round(); });

});

index.html

<!-- Enter your HTML code here -->
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Buttons Grid</title>
<div class="btns">
  <div>
    <button id="btn1" class="btn">1</button>
    <button id="btn2" class="btn">2</button>
    <button id="btn3" class="btn">3</button>
  </div>
  <div>
    <button id="btn4" class="btn">4</button>
    <button id="btn5" class="btn">5</button>
    <button id="btn6" class="btn">6</button>
  </div>
  <div>
    <button id="btn7" class="btn">7</button>
    <button id="btn8" class="btn">8</button>
    <button id="btn9" class="btn">9</button>
  </div>
</div>
    </head>
    <body>
    </body>

</html>


Wednesday 23 October 2019

Day 8: Create a Button :10 Days Of JavaScript HackerRank Solution

Problem:-

Objective
In this challenge, we practice creating buttons in JavaScript. Check out the attached tutorial for learning materials.
Task
Complete the code in the editor so that it creates a clickable button satisfying the following properties:
  • The button's id is btn.
  • The button's initial text label is . After each click, the button must increment by . Recall that the button's text label is the JS object's innerHTML property.
  • The button has the following style properties:
    • width of 96px.
    • height of 48px.
    • The font-size attribute is 24px.
The .js and .css files are in different directories, so use the link tag to provide the CSS file path and the script tag to provide the JS file path:
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" href="css/button.css" type="text/css">
    </head>
    
    <body>
     <script src="js/button.js" type="text/javascript"></script>
    </body>
</html>
Submissions
This is a new style of challenge involving Front-End rendering. It may take up to  seconds to see the result of your code, so please be patient after clicking Submit. The Submissions page contains screenshots to help you gauge how well you did.
Ask questions in the Discussions forum and submit any bug reports to support@hackerrank.com. Enjoy!
Explanation
Initially, the button looks like this:
initial
After the first  clicks, it looks like this:
four clicks
After  more clicks, it looks like this:
nine clicks

Solution:-

button.css

#btn {
    width: 96px;
    height: 48px;
    font-size: 24px;

}



button.js

var btn = document.createElement("Button");

btn.innerHTML = "0";
btn.id = "btn";
document.body.appendChild(btn);

btn.onclick = function() {
    btn.innerHTML++;

}

index.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Button</title>
        <link rel="stylesheet" href="css/button.css" type="text/css">
    </head>

    <body>
        <script src="js/button.js" type="text/javascript"></script>
    </body>

</html>

Error While embed the video in Your website page

Error:- Refused to display '<URL>' in a frame because it set 'X-Frame-Options' to 'sameorigin Solution:- if ...