创建用户变量

时间:2019-05-08 23:04:42

标签: arrays

给我的问题是

创建一个用户变量,并为其分配一个空数组文字。 创建一个displaySelectedUser箭头功能 创建一个letCalculateBMI箭头函数 创建加电UI箭头功能 在startApp函数中,调用powerupTheUI函数,然后调用fetchAndDisplayUsers函数。 第2步 在powerupTheUI函数中,仅使用DOM Selector API:

将displaySelectedUser设置为SELECT UI元素的更改事件侦听器。 将letCalculateBMI设置为#oracle按钮的点击事件侦听器 第三步 fetchAndDisplayUsers尝试调用一个不存在的displayUsers函数。让我们解决这个问题!

在fetchAndDisplayUsers函数上方创建一个displayUsers箭头函数。它应该带有一个用户参数 它应该使用数组.forEach函数遍历用户,并使用OPTION元素填充SELECT UI元素。每个OPTION的值均应设置为给定用户的ID,而其显示文本则应设置为用户名 我们可以在我们的应用中看到一个示例用户;来自尼日利亚的某个查尔斯·奥迪利(Charles Odili)!在fetchAndDisplayUsers中的users数组中添加一个新的用户对象(例如代表您自己)。随意不要使用实际数据值,但要确保ID与现有用户的ID不同。 步骤4 当我们从列表中选择样本用户时,什么也不会发生。让我们解决这个问题!

在displaySelectedUser上方创建一个getSelectedUser箭头功能。它应该带有一个userId参数,并在users集合上使用Array .find函数来查找并返回所选的用户对象。您的.find调用应采用一个内联箭头函数,并对其参数进行解构以获得id属性。 第5步 回想一下displaySelectedUser函数被称为事件处理程序。这意味着在触发DOM事件时它将接收一个事件对象。

更新displaySelectedUser函数,并将预期事件参数解构为仅目标属性。

接下来,displaySelectedUser应该调用具有目标的某个特定属性的getSelectedUser,该属性表示更改事件中SELECT元素的选定值。如果您不知道有问题的酒店,可以随时进行谷歌搜索。最后,将.getSelectedUser调用的结果分配给用户变量。

接下来,使用Object.keys(..)获取用户属性的集合。将其分配给属性变量。

使用数组.forEach函数遍历属性,然后在UI中显示属性。提示:*给定的属性,例如* Age,具有一个带有data-age-value属性的对应SPAN元素。您可以使用ES6模板字符串构建针对该属性的SPAN的查询选择器,然后使用它查询DOM。您还希望确保仅在DOM查询成功的情况下才更新UI。祝你好运!

我已经尽力编写了一些代码,但仍然有bug。

我写的代码如下;

<!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>Mini App</title>

    <style>

      div.user-photo {
        margin: 1em auto;
      }

      body{
        background-color: white;
      }

      div.details{
        color:white; 
        background:#6200ee; 
        font-size:1.3em; 
        margin-top:4em; 
        padding-top:0.5em;
        padding-bottom:0.5em;
        padding-right:1em;
        padding-left:1em;
        border-radius:10px;
      }     

      .details p{
        margin:0.3em
      }

      div#outcome{
        position:absolute; 
        right:2.2em; 
        bottom:6.5em; 
        width:100px;
        text-align:center
      }

      #outcome h1{
        padding:1em; 
        background: white; 
        border-radius:10%; 
        margin:0 
      }

      #outcome p{
        height:40px; 
        color:white;
        border-bottom:5px solid white; 
        font-size:2em; 
        margin:0; 
        padding-top: 0.5em;
        padding-bottom:0.5em;
        padding-left:0;
        padding-right:0;
      }

       #oracle{
        margin-top:2.5em; 
        border: 1px solid; 
        width:100%;
      }

      div.select{
        margin-bottom:2.5em
      }
      div.user-photo {
        margin: 1em auto;
        height:150px;
        width:150px;
        border-radius:50%;
        overflow:hidden;
      }

    </style>
  </head>
  <body>

    <button id="filter-query" class="mdc-icon-button material-icons">filter_list</button>

    <div class="select">
      <select class="select-text">
        <option disabled="disabled" selected="selected">
          Select User
        </option>
      </select>
    </div>

    <div class="user-photo">
       <img src="https://via.placeholder.com/150" alt="Image" />
    </div>

    <div class="details mdc-elevation--z3">

      <p>
        <span class="prop" data-age="">
          Age :
        </span>
        <span class="value" data-age-value>

        </span>        
      </p>

      <p>
        <span class="prop" data-height="">
          Height :
        </span>
        <span class="value" data-height-value>

        </span>        
      </p>

      <p>
        <span class="prop" data-weight="">
          Weight :
        </span>
        <span class="value" data-weight-value>

        </span>        
      </p>

      <p>
        <span class="prop" data-gender="">
          Gender :
        </span><span class="value" data-gender-value>

        </span>        
      </p>

      <p>
        <span class="prop" data-country="">
          Country :
        </span>
        <span class="value" data-country-value>

        </span>

      </p>

      </div>

    <button id="oracle" class="mdc-button">Calculate BMI</button>

    <div id="outcome">
      <h1 class="mdc-typography--headline5" >
        BMI
      </h1>
      <p></p>
    </div>

    <script>

      const users = [];

      const getSelectedUser = (userId) => {
        return users.find(({id}) => id === userId);
      };

        const displaySelectedUser = (event) => {
        const { target } = event;
        const user = getSelectedUser(target.value);
        const properties = Object.keys(user);

          for(const property of properties) {
             const valueSpan = document
            .querySelector(`.details span[data-${ property }-value]`)
             if(valueSpan) {
            valueSpan.innerText = user[property]
             }
            }
          };

      const letsCalculateBMI = () => {

      }

      const powerupTheUI = () => {
        var selectElement = document.querySelector("select-text");
        selectElement.addEventListener("change", displaySelectedUser);

        var button =  document.querySelector("#oracle");
        button.addEventListener("click", letsCalculateBMI);
      }

        const displayUsers=(users)=>{ 
        var parent = document.querySelector("select");

        users.forEach((user) => {
          var option = document.createElement("option");
          option.textContent = user.name;
          option.setAttribute("value", user.id);

          parent.appendChild(option);

        });

  };

      const fetchAndDisplayUsers = () => {
        users.push({
          age: 40,
          weight: 75,
          height: 6,
          country: 'Nigeria',
          name: 'Charles Odili',
          id: 'dfhb454768DghtF'
        });

        users.push({
          age:28,
          weight:65,
          height:5,
          name:'Charlse Wembley',
          country:'America',
          id:'1aGRat5679fuhGH'
        });

        displayUsers(users);
      };

      const startApp = () => {

        powerupTheUI();
        fetchAndDisplayUsers();

      };

      startApp();

    </script>
  </body>
</html>

请,一个帮手应该帮助我复习一下,并帮助我摆脱挑战。

0 个答案:

没有答案