RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-405755

Kolamik's questions

Martin Hope
Kolamik
Asked: 2022-09-11 01:57:23 +0000 UTC

做出反应。如何实现加货到篮子和数量货品柜台的功能

  • 0

我正在学习反应。我给自己设定了实现功能的任务,就像在网上商店一样:当你点击“+”图标时,会有产品卡片,它们应该被添加到购物篮中,商品数量和总金额应该显示在主页。我使用 useState 钩子编写了它,但显然我做错了什么。请帮助我了解我到底做错了什么?

应用程序.js


import './App.css';

import Products from './Pages/Products'

import Basket from './Pages/Basket'

import NotFound from './Pages/NotFound'

function App() {
  return (
    <>
    <div className = "products">
       <Products />
    </div>
    <div className = "basket">
      <Basket />
    </div>
    </>
  );
}

export default App;

Products.js

import Card from '../components/elements/card.js';
import { products } from '../products';
import './Products.css'
import React, { useState } from 'react';
//импорт React router DOM
import { Link } from 'react-router-dom';


//Функциональный компанент Products
function Products () {

  //хук для подсчета суммы цен
  const [productsSum, setProductsSum]=useState(0);

  //хук для подсчета количества добавлнных товаров
  const [countsSum, setCountsSum]=useState(0);

  //функция 
  const addProduct = (price) => {
    setProductsSum(productsSum => productsSum + parseInt(price));
    setCountsSum(countsSum => countsSum + 1);
  }

    return (
    <main className = "main">
     <div className = "container">
       <header className = "header">
         <h1>наша продукция</h1>
         <div className = "basketArea">
           <div calssName = "total">
              {countsSum} товара на сумму {productsSum}
              <Link to="./Basket" className = "link"><img src= "/Group 71.png"></img></Link>
           </div>
         </div>
       </header>

       <div className = "menu">
              {products.map(key => {
                     const {url, title, description, price, weight} = key;
                     return(
                            <Card 
                            url={url} 
                            title = {title} 
                            description={description} 
                            price={price} 
                            weight={weight} 
                            handleClick = {addProduct(price)}
                            />
                     )
              })}
       </div>
       
     </div>
    </main>
  );
}

export default Products;

篮子.js

import {products} from '../products';
import './Basket.css'
import CardBasket from '../components/elements/card-basket.js'
import './Products.css'


function Basket () {
    
  return (
    <main className = "main-basket">
     <div className = "container-basket">
       <header className = "header-basket">
         <h1>Корзина с выбранными товарами</h1>
       </header>

       <div className = "menu-basket">
              {products.map(key => {
                     const {url, title, description, price, weight} = key;
                     return(
                            <CardBasket
                            url={url} 
                            title = {title} 
                            description={description} 
                            price={price} 
                            weight={weight} />
                     )
              })}
         
       </div>
       <div className = "line"></div>
       <footer className = "footer-basket">
         <h2 className = "footer-basket__header">Заказ на сумму: {} </h2>
         <button className = "footer-basket__btn">Оформить заказ</button>
       </footer>
     </div>
    </main>
  );
}

export default Basket;

产品.js

export const products = [
    {
    url:'/1.png',
    title:'Устрицы по рокфеллеровски', 
    description:'Значимость этих проблем настолько очевидна, что укрепление и развитие структуры ',
    price:'2700',
    weight:'500 г.'
},
{
    url:'/2 701.png',
    title:'Свиные ребрышки на гриле с зеленью', 
    description:'Не следует, однако забывать, что реализация намеченных плановых',
    price:'1600',
    weight:'750 г.'
},
{
    url:'/3.png',
    title:'Креветки по-королевски в лимонном соке', 
    description:'Значимость этих проблем настолько очевидна, что укрепление и развитие структуры обеспечивает широкому кругу',
    price:'1820',
    weight:'7 шт.'
},
{
    url:'/4.png',
    title:'Устрицы по-рокфеллеровски', 
    description:'Значимость этих проблем настолько очевидна, что укрепление и развитие структуры ',
    price:'2700',
    weight:'500 г.'
},
{
    url:'/1.png',
    title:'Устрицы по рокфеллеровски', 
    description:'Значимость этих проблем настолько очевидна, что укрепление и развитие структуры ',
    price:'2700',
    weight:'500 г.'
},
{
    url:'/2 701.png',
    title:'Свиные ребрышки на гриле с зеленью', 
    description:'Не следует, однако забывать, что реализация намеченных плановых',
    price:'1600',
    weight:'750 г.'
},
{
    url:'/3.png',
    title:'Креветки по-королевски в лимонном соке', 
    description:'Значимость этих проблем настолько очевидна, что укрепление и развитие структуры обеспечивает широкому кругу',
    price:'1820',
    weight:'7 шт.'
},
{
    url:'/4.png',
    title:'Устрицы по-рокфеллеровски', 
    description:'Значимость этих проблем настолько очевидна, что укрепление и развитие структуры ',
    price:'2700',
    weight:'500 г.'
}
]
reactjs
  • 0 个回答
  • 0 Views
Martin Hope
Kolamik
Asked: 2022-08-25 03:19:36 +0000 UTC

帮我找个js脚本的bug

  • 0

我为注册和登录表单编写了代码。最初您需要注册。表单检查“邮件”、“密码”字段中输入数据的有效性以及复选框中是否存在复选标记(据我所知,这里的代码在某处失败),然后单击“注册”按钮,输入的数据保存在 localStorage 中,注册表切换到登录表单。在登录表单中,还应检查字段,但已检查是否符合存储在 localStorage 中的数据。但是在单击复选框时,该脚本在注册表单中停止工作。请帮我找出错误。

JS:

'use strict'

//Переменные
//формы
const form_a = document.querySelector('#form-entr');
const form_b = document.querySelector('#form');

//авторизация и регистрация
const toformReg = document.querySelector('#form1');
const toformEntr = document.querySelector('#form2');

//подзаголовки
const preheader = document.querySelector('#preheader');
const preheader_entr = document.querySelector('#preheader_entr');

//переменная для проверки валидации почты
const emailChecker = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/iu;

//почта
const emailField = document.querySelector('#e-mail');
const email_entr = document.querySelector('#e-mail_entr');

//пароли
const password = document.querySelector('#password');
const password_entr = document.querySelector('#password_entr');

//звезды
const star1 = document.querySelector('#star1');
const star2 = document.querySelector('#star2');
const star3 = document.querySelector('#star3');

//ошибки
const error = document.querySelector('#error');
const errorpass = document.querySelector('#errorpass');
const errorpass2 = document.querySelector('#errorpass2');
const errorpass3 = document.querySelector('#errorpass3');
const errorEntr = document.querySelector('#errorEntr');

//чекбокс
const checkbox1 = document.querySelector('#box1');
const checkbox2 = document.querySelector('#box2');

//кнопки
const btn = document.querySelector('#btn');
const btn_entr = document.querySelector('#btn_entr');

//переменные сравнения
let a = false;
let b = false;
let c = false;
let d = false;
let e = false;
let f = false;


//переключение между окнами при нажатии на надпись "Зарегистрироваться"
function goToRegistration(){
  form_a.style.visibility = 'collapse';
  form_b.style.visibility = 'visible';
}
toformReg.addEventListener('click', goToRegistration);

//переключение между окнами при нажатии на надпись "Авторизоваться"
function goToEntrance(){
  form_b.style.visibility = 'collapse';
  form_a.style.visibility = 'visible';
}
toformEntr.addEventListener('click', goToEntrance);

//Форма регистрации
//проверка е-mail на валидность
function isEmailValid(value) {
  return emailChecker.test(value);
}


function onInput() {
  if (isEmailValid(emailField.value)) {
    emailField.style.borderColor = 'green';
    error.style.display = 'none';
    preheader.style.color = 'black';
    star1.style.color = 'black';
    a = true;
  } else {
    emailField.style.borderColor = 'red';
    preheader.style.color = 'red';
    error.style.display = 'initial';
    star1.style.color = 'red';
    a = false;
  }
}
emailField.addEventListener('keyup', onInput);


//проверка пароля на валидность
function passValidation() {
  if (password.value.length === 0) {
    password.style.borderColor = 'red';
    errorpass.style.display = 'initial';
    preheader_entr.style.color = 'red';
    errorpass2.style.display = 'none';
    star2.style.color = 'red';
    b = false;
  } else if (password.value.length > 0 && password.value.length < 8) {
    password.style.borderColor = 'red';
    errorpass2.style.display = 'initial';
    preheader_entr.style.color = 'red';
    star2.style.color = 'red';
    b = false;
  } else {
    password.style.borderColor = 'green';
    errorpass.style.display = 'none';
    errorpass2.style.display = 'none';
    preheader_entr.style.color = 'black';
    star2.style.color = 'black';
    b = true; 
  }
}
password.addEventListener('keyup', passValidation);

//проверка чекбокса
function checkboxValid() {
  if (!checkbox1.checked === false) {
    checkbox1.style.borderColor = 'black';
    errorpass3.style.display = 'none';
    c = true;
  } else {
    checkbox1.style.borderColor = 'red';
    errorpass3.style.display = 'initial';
    star3.style.color = 'red';
    c = false;
  }
}
checkbox1.addEventListener('change', checkboxValid);

//проверка на соответствие всем 3-м условиям регистрации
function formValidation(evt) {
  if (a === true && b === true && c === true) {
    evt.preventDefault();
    console.log(emailField.value);
    console.log(password.value);

    //запись данных в localStorage

    //запись e-mail
    let emailLS = {email: emailField.value};
    let serialEmailLS = JSON.stringify(emailLS);
    localStorage.setItem("KeyEmail", serialEmailLS);

    //запись пароля
    let passwordLS = {password: password.value};
    let serialPasswordLS = JSON.stringify(passwordLS);
    localStorage.setItem("KeyPass", serialPasswordLS);
  } 
  //переключение на окно входа
  goToEntrance();
}  
form_b.addEventListener('submit', formValidation)


//Форма Вход
  
//переменные пароля и почты сохраненные в localStorage
let returnEMailLS = {};
let returnPasswordLS = {};


//проверка e-mail в форме Вход
function emailEnterValidation(){
  returnEMailLS = JSON.parse(localStorage.getItem("KeyEmail"));
  if (email_entr.value === returnEMailLS.email){
  email_entr.style.borderColor = 'green';
  preheader_entr.style.color = 'black';
  star1.style.color = 'black';
  d = true;
} else {
  email_entr.style.borderColor = 'red';
  preheader_entr.style.color = 'red';
  star1.style.color = 'red';
  errorEntr.style.display = 'initial';
  d = false;
}
}
email_entr.addEventListener('keyup',emailEnterValidation);


//проверка пароля
function passwordEnterValidation(){
  returnPasswordLS = JSON.parse(localStorage.getItem("KeyPass"));
  if (password_entr.value === returnPasswordLS.password){
  password_entr.style.borderColor = 'green';
  errorpass.style.display = 'none';
  errorEntr.style.display = 'none';
  preheader_entr.style.color = 'black';
  star2.style.color = 'black'
    e = true;
} else {
  preheader_entr.style.color = 'red';
  password_entr.style.borderColor = 'red';
  errorEntr.style.display = 'initial';
  star2.style.color = 'red';
  e = false;
}
}
password_entr.addEventListener('keyup', passwordEnterValidation);

//проверка чекбокса
function enterCheckboxValidation() {
  if (!checkbox2.checked === false) {
    checkbox2.style.borderColor = 'black';
    errorpass3.style.display = 'none';
    f = true;
  } else {
    checkbox2.style.borderColor = 'red';
    errorpass3.style.display = 'initial';
    star3.style.color = 'red';
    f = false;
  }
}
checkbox2.addEventListener('change', checkboxValid);

//проверка  на соответствие условиям входа
function validEnter(evt){
  
  if (d === true && e === true && f === true){
    evt.preventDefault();
    window.location.href = 'empty_index.html';
  }
}
form_a.addEventListener('submit', validEnter);

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="../module_two_javascript/normalize.css">
    <link rel="stylesheet" href="../module_two_javascript/style.css">
    <link rel="preconnect" href="https://fonts.googleapis.com"> 
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <title>Form</title>
</head>
<body>
  <!--Форма "Вход"-->

  <form class = "form-a" id = "form-entr">
  
    <p class = "form-a__registration" id = "form1">Зарегистрироваться</p>
    <h1 class = "form-a__header">Вход</h1>

    <p class = "form-a__preheader" id = "preheader_entr">E-mail</p>

    <div class = "form-a__container">
      <span class = "form-a__star" id = "star1">*</span>
      <input class = "form-a__field" type = "text" id = "e-mail_entr" placeholder = "Введите e-mail">
    </div>
   
    <p class = "form-a__error" id = "error">Поле обязательно для заполнения</p>

    <p class = "form-a__preheader" id = "preheaderpass">Пароль</p>

    <div class = "form-a__container">
      <span class = "form-a__star" id = "star2">*</span>
    <input class = "form-a__field" type = "password" id = "password_entr" placeholder = "Введите пароль">
    </div>
    
    <p class = "form-a__error" id = "errorpass">Поле обязательно для заполнения</p>
    <p class = "form-a__error" id = "errorEntr">Пароль или логин неверный</p>

    <div class = "form-a__pc">
      <div class = "form-a__checkbox">

        <div class = "form-a__container">
          <span class = "form-a__star" id = "star3">*</span>
        <input class = "form-a__box" type = "checkbox" id = "box1" value = "check">
        </div>
        
        <label for = "box" class = "form-a__text">Я согласен получать обновления на почту</label>
      </div>
      <p class = "form-a__error" id = "errorpass3">Поле обязательно для заполнения</p>
    </div>

    <button class = "form-a__send" id = "btn_entr" type = "submit">
            Войти
    </button>
  </form>


<!--Форма "Регистрация"-->

    <form class = "form-b" id = "form">

      <p class = "form-b__registration" id = "form2">Авторизоваться</p>
      <h1 class = "form-b__header">Регистрация</h1>
  
      <p class = "form-b__preheader" id = "preheader">E-mail</p>
  
    <div class = "form-b__container">
      <span class = "form-b__star" id = "star">*</span>
      <input class = "form-b__field" type="text" id = "e-mail" placeholder = "Введите e-mail">
    </div>
  
      <p class = "form-b__error" id = "error">Поле обязательно для заполнения</p>
      <p class = "form-b__preheader" id = "preheaderpass">Пароль</p>
  
    <div class = "form-b__container">
      <span class = "form-b__star" id = "star">*</span>
      <input class = "form-b__field" type = "password" id = "password" placeholder="Введите пароль">
    </div> 
      
      <p class = "form-b__error" id = "errorpass">Поле обязательно для заполнения</p>
      <p class = "form-b__error" id = "errorpass2">Пароль должен содержать как минимум 8 символов</p>
  
      <div class = "form-b__pc">
        <div class = "form-b__checkbox">
  
        <div class = "form-b__container"> 
          <span class = "form-b__star" id = "star">*</span>
          <input class = "form-b__box" type="checkbox" id = "box2" value = "check">
         </div> 
  
          <label for = "box" class = "form-b__text">Я согласен получать обновления на почту
          </label>
        </div>
        <p class = "form-b__error" id = "errorpass3">Поле обязательно для заполнения</p>
      </div>
  
      <button class = "form-b__send" id = "btn" type = "submit">
              Регистрация
      </button>
    </form>

    <script src = "../module_two_javascript/script_exam.js"></script>
</body>
</html>

CSS:

body {
    max-width: 1440px;
    max-height: 769px;
    background-color: #1B2473;
    font-family: 'Roboto', sans-serif;
    position:relative;
  }

  @media screen and (max-width:768px) {
      .body{
        max-width: 768px;
      }
    
  }
  
.form-a{
    position:absolute;
    top:82px;
    left:412px;
    width: 600px;
    height: fit-content;
    background: #FFFFFF;
    box-shadow: 0px 0px 40px 10px rgba(0, 0, 0, 0.25);
    border-radius: 20px;
    margin-left: auto;
    margin-right: auto;
    margin-top:82px;
    display:flex;
    flex-direction:column;
    visibility: visible;
}

.form-b{
    position:absolute;
    top:82px;
    left:412px;
    width: 600px;
    height: fit-content;
    background: #FFFFFF;
    box-shadow: 0px 0px 40px 10px rgba(0, 0, 0, 0.25);
    border-radius: 20px;
    margin-left: auto;
    margin-right: auto;
    margin-top:82px;
    display:flex;
    flex-direction:column;
    visibility: collapse;
}

@media screen and (max-width: 768px){
    .form-a, .form-b{
    width: 728px;
    height: fit-content;
    }
}

.form-a__preheader, .form-b__preheader{
    font-weight: 700;
    font-size: 16px;
    line-height: 16px;
    
    color: #787878;
    margin-left:45px;
    margin-bottom:7px;
}

@media screen and (max-width:768px){
    .form-a__preheader, .form-b__preheader{
    font-size: 24px;
    } 
}

.form-a__header{
    width: 115px;
    height: 50px;
    
    font-weight: 700;
    font-size: 50px;
    line-height: 50px;
    
    color: #787878;

    margin-left:auto;
    margin-right:auto;
    margin-bottom:0px;
    margin-top:15px;
}

.form-b__header{
    width: 115px;
    height: 50px;
    
    font-weight: 700;
    font-size: 50px;
    line-height: 50px;
    
    color: #787878;

    margin-left:25%;
    margin-right:auto;
    margin-bottom:0px;
    margin-top:20px;
}


@media screen and (max-width:768px){
    .form-a__header, .form-b__header{
    width: 138px;
    font-size: 60px;
    }
}

.form-a__field, .form-b__field{
    width: 509px;
    height: 49px;
    
    background: #FFFFFF;
    border: 2px solid #787878;
    border-radius: 10px;

    margin-left:0px;
    margin-right:auto;
    margin-bottom:0px;

    font-weight: 700;
    font-size: 28px;
    line-height: 36px;

    color: #CCCCCC;
}

@media screen and (max-width:768px){
    .form-a__field, .form-b__field{
    width: 638px;
    height: 49px;
    } 
}

.form-a__error, .form-b__error{
  display:none;
  font-weight: 500;
  font-size: 10px;
  line-height: 16px;
  color: #CB2424;  
  margin-left:45px;
  margin-right:auto;
  margin-bottom:12px;
}

.form-a__star, .form-b__star{
    width: 7px;
    height: 12px;
    color: #787878;
}

.form-a__pc, .form-b__pc{
  width: 638px;
  height:fir-content;
    display: flex;
    flex-direction:column;
    justify-content:flex-start;
}

.form-a__box, .form-b__box{
    width: 24px;
    height: 24px;

    border: 2px solid #787878;
    border-radius: 7px;
    margin-left:0px;
    margin-right:10px;
}

@media screen and (max-width:768px){
    .form-a__box, .form-b__box{
        width: 32px;
        height: 32px;
    }  
}

.form-a__checkbox, .form-b__checkbox{
  width:100%;
  display:flex;
  flex-direction:row;
}

.form-a__text, .form-b__text{
    width: 278px;
    height: 16px;

    font-weight: 400;
    font-size: 14px;
    line-height: 16px;

    color: #787878;
    margin-top:3px;
}

@media screen and (max-width:768px){
    .form-a__text, .form-b__text{
        width: 358px;
        font-size: 18px;
    }  
}

.form-a__send, .form-b__send{
    width: 180px;
    height: 52px;

    background-color: #1A226B;
    border-radius: 10px;

    font-weight: 700;
    font-size: 24px;
    line-height: 16px;

    color: #FFFFFF;

    margin-left:auto;
    margin-right:auto;
    margin-top:15px;
    margin-bottom:26px;
}

@media screen and (max-width:768px){
    .form-a__send, .form-b__send{
    width: 220px;
    height: 80px;
    font-size: 32px;
    }  
}

.form-a__container, .form-b__container{
    display:flex;
    flex-direction:row;
}

.form-a__star, .form-b__star{
    margin-left:34px;
    margin-right:4px;
}

.form-a__registration, .form-b__registration{
    width: 137px;
    height: 16px;
    font-weight: 700;
    font-size: 14px;
    line-height: 16px;
    color: #1A226B;
    margin-left:70%;
    margin-top:10px;
}

.form-a__registration:hover{
    font-size: 14px;
    color: green;
}

.form-b__registration:hover{
    font-size: 14px;
    color: green;
}

@media screen and (max-width:768px) {
  .body {
    max-width: 768px;
  }
}

.form {
  width: 600px;
  height: 412px;
  background: #FFFFFF;
  box-shadow: 0px 0px 40px 10px rgba(0, 0, 0, 0.25);
  border-radius: 20px;
  margin-left: auto;
  margin-right: auto;
  margin-top: 82px;
  display: flex;
  flex-direction: column;
}

@media screen and (max-width: 768px) {
  .form {
    width: 728px;
    height: 697px;
  }
}

.form__preheader {
  font-weight: 700;
  font-size: 16px;
  line-height: 16px;
  color: #787878;
  margin-left: 45px;
  margin-bottom: 7px;
}

@media screen and (max-width:768px) {
  .form__preheader {
    font-size: 24px;
  }
}

.form__header {
  width: 115px;
  height: 50px;
  font-weight: 700;
  font-size: 50px;
  line-height: 50px;
  color: #787878;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0px;
  margin-top: 26px;
}

@media screen and (max-width:768px) {
  .form__header {
    width: 138px;
    font-size: 60px;
  }
}

.form__field {
  width: 509px;
  height: 49px;
  background: #FFFFFF;
  border: 2px solid #787878;
  border-radius: 10px;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0px;
  font-weight: 700;
  font-size: 28px;
  line-height: 36px;
  color: #CCCCCC;
}

@media screen and (max-width:768px) {
  .form__field {
    width: 638px;
    height: 49px;
  }
}

.form__error {
  display: none;
  font-weight: 500;
  font-size: 10px;
  line-height: 16px;
  color: #CB2424;
  margin-left: 45px;
  margin-right: auto;
  margin-bottom: 12px;
}

.form__star {
  width: 7px;
  height: 12px;
  color: #787878;
}

.form__pc {
  width: 638px;
  height: fir-content;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.form__box {
  width: 24px;
  height: 24px;
  border: 2px solid #787878;
  border-radius: 7px;
  margin-left: 45px;
  margin-right: 10px;
}

@media screen and (max-width:768px) {
  .form__box {
    width: 32px;
    height: 32px;
  }
}

.form__checkbox {
  width: 100%;
  display: flex;
  flex-direction: row;
}

.form__text {
  width: 278px;
  height: 16px;
  font-weight: 400;
  font-size: 14px;
  line-height: 16px;
  color: #787878;
  margin-top: 3px;
}

@media screen and (max-width:768px) {
  .form__text {
    width: 358px;
    font-size: 18px;
  }
}

.form__send {
  width: 180px;
  height: 52px;
  background-color: #1A226B;
  border-radius: 10px;
  font-weight: 700;
  font-size: 24px;
  line-height: 16px;
  color: #FFFFFF;
  margin-left: auto;
  margin-right: auto;
  margin-top: 26px;
}

@media screen and (max-width:768px) {
  .form__send {
    width: 220px;
    height: 80px;
    font-size: 32px;
  }
}
javascript
  • 1 个回答
  • 53 Views
Martin Hope
Kolamik
Asked: 2022-08-23 04:21:46 +0000 UTC

如何在JS中实现表单切换功能

  • 0

有2种形式,需要实现它们之间的切换。更准确地说,当您单击“注册”或“登录”时,将分别出现“注册”或“登录”表单。我的版本显然不适合,但我在 Internet 上找不到另一个版本。请帮忙提供建议。


    'use strict'

    //Переменные
    //формы
    const form_a = document.querySelector('#form-entr');
    const form_b = document.querySelector('#form');

    //авторизация и регистрация
    const toformReg = document.querySelector('#form1');
    const toformEntr = document.querySelector('#form2');

    //переключение между окнами при нажатии на надпись "Зарегистрироваться"
function goToRegistration(){
  form_a.style.visibility = 'collapse';
  form_b.style.visibility = 'visible';
}
toformReg.addEventListener('click', goToRegistration);

//переключение между окнами при нажатии на надпись "Авторизоваться"
function goToEntrance(){
  form_b.style.visibility = 'collapse';
  form_a.style.visibility = 'visible';
}
toformEntr.addEventListener('click', goToEntrance);

    body {
      max-width: 1440px;
      max-height: 769px;
      background-color: #1B2473;
      display: flex;
      flex-direction: column;
      font-family: 'Roboto', sans-serif;
    }

    .form-a{
    width: 600px;
    height: fit-content;
    background: #FFFFFF;
    box-shadow: 0px 0px 40px 10px rgba(0, 0, 0, 0.25);
    border-radius: 20px;
    margin-left: auto;
    margin-right: auto;
    margin-top:82px;
    display:flex;
    flex-direction:column;
    visibility: visible;
}



.form-b{
    width: 600px;
    height: fit-content;
    background: #FFFFFF;
    box-shadow: 0px 0px 40px 10px rgba(0, 0, 0, 0.25);
    border-radius: 20px;
    margin-left: auto;
    margin-right: auto;
    margin-top:82px;
    display:flex;
    flex-direction:column;
    visibility: collapse;
}
    .form-a__registration,
    .form-b__registration {
      width: 137px;
      height: 16px;
      font-weight: 700;
      font-size: 14px;
      line-height: 16px;
      color: #1A226B;
      margin-left: 70%;
      margin-top: 10px;
    }

    .form-a__registration:hover {
      font-size: 14px;
      color: green;
    }

    .form-b__registration:hover {
      font-size: 14px;
      color: green;
    }
    <body>
      <!--Форма "Вход"-->

      <form class="form-a" id="form-entr">

        <p class="form-a__registration" id="form1">Зарегистрироваться</p>
      </form>

      <!--Форма "Регистрация"-->

      <form class="form-b" id="form">

        <p class="form-b__registration" id="form2">Авторизоваться</p>
      </form>
    </body>

javascript css
  • 1 个回答
  • 36 Views
Martin Hope
Kolamik
Asked: 2022-08-15 21:48:34 +0000 UTC

js表单验证功能不起作用

  • 0

无法编写检查表单有效性的函数。如果所有 3 个字段都填写正确,则该函数应将电子邮件和密码输出到控制台。我创建了 3 个等于 false 的变量 a、b 和 c,并将它们按 1 构建到每个块中。条件中应该有错误的地方,我分配了值 false,并且一切正常 - 真实。然后我尝试做检查。如果所有 3 个字段 = true,则密码和邮件应显示在控制台中。但是由于某种原因,该功能不起作用。

请帮助我理解我错在哪里?

'use strict'

const emailChecker = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/iu;


const errorIsOn = document.querySelector('#error');
const preheader = document.querySelector('#preheader');
const emailField = document.querySelector('#e-mail');
const btn = document.querySelector('#btn');
const password = document.querySelector('#password');
const errorpass = document.querySelector('#errorpass');
const errorpass2 = document.querySelector('#errorpass2');
const preheaderpass = document.querySelector('#preheaderpass');
const checkbox = document.querySelector('#box');
const errorpass3 = document.querySelector('#errorpass3');

let a = false;
let b = false;
let c = false;

function isEmailValid(value) {
  return emailChecker.test(value);
}

function onInput() {
  if (isEmailValid(emailField.value)) {
    emailField.style.borderColor = 'green';
    errorIsOn.style.display = 'none';
    preheader.style.color = 'black';
    a = true;
  } else {
    emailField.style.borderColor = 'red';
    errorIsOn.style.display = 'initial';
    preheader.style.color = 'red';
    a = false;
  }
}

emailField.addEventListener('keyup', onInput);


function passValidation() {
  if (password.value.length === 0) {
    password.style.borderColor = 'red';
    errorpass.style.display = 'initial';
    preheaderpass.style.color = 'red';
    errorpass2.style.display = 'none';
    b = false;
  } else if (password.value.length > 0 && password.value.length <= 8) {
    password.style.borderColor = 'red';
    errorpass2.style.display = 'initial';
    preheaderpass.style.color = 'red';
    b = false;
  } else {
    password.style.borderColor = 'green';
    errorpass.style.display = 'none';
    errorpass2.style.display = 'none';
    preheaderpass.style.color = 'black';
    return (password);
    b = true;
  }
}

password.addEventListener('keyup', passValidation);


function checkboxValid() {
  if (!checkbox.checked === false) {
    checkbox.style.borderColor = 'black';
    errorpass3.style.display = 'none';
    c = true;
  } else {
    checkbox.style.borderColor = 'red';
    errorpass3.style.display = 'initial';
    c = false;
  }
}

checkbox.addEventListener('click', checkboxValid);


function formValidation() {
  if (a === true && b === true && c === true) {
    console.log(emailField);
    console.log(password);
  } else {
    console.log('Поля не заполнены!')
  }
}

btn.addEventListener('click', formValidation);
body {
  max-width: 1440px;
  max-height: 769px;
  background-color: #1B2473;
  display: flex;
  flex-direction: column;
  font-family: 'Roboto', sans-serif;
}

@media screen and (max-width:768px) {
  .body {
    max-width: 768px;
  }
}

.form {
  width: 600px;
  height: 412px;
  background: #FFFFFF;
  box-shadow: 0px 0px 40px 10px rgba(0, 0, 0, 0.25);
  border-radius: 20px;
  margin-left: auto;
  margin-right: auto;
  margin-top: 82px;
  display: flex;
  flex-direction: column;
}

@media screen and (max-width: 768px) {
  .form {
    width: 728px;
    height: 697px;
  }
}

.form__preheader {
  font-weight: 700;
  font-size: 16px;
  line-height: 16px;
  color: #787878;
  margin-left: 45px;
  margin-bottom: 7px;
}

@media screen and (max-width:768px) {
  .form__preheader {
    font-size: 24px;
  }
}

.form__header {
  width: 115px;
  height: 50px;
  font-weight: 700;
  font-size: 50px;
  line-height: 50px;
  color: #787878;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0px;
  margin-top: 26px;
}

@media screen and (max-width:768px) {
  .form__header {
    width: 138px;
    font-size: 60px;
  }
}

.form__field {
  width: 509px;
  height: 49px;
  background: #FFFFFF;
  border: 2px solid #787878;
  border-radius: 10px;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0px;
  font-weight: 700;
  font-size: 28px;
  line-height: 36px;
  color: #CCCCCC;
}

@media screen and (max-width:768px) {
  .form__field {
    width: 638px;
    height: 49px;
  }
}

.form__error {
  display: none;
  font-weight: 500;
  font-size: 10px;
  line-height: 16px;
  color: #CB2424;
  margin-left: 45px;
  margin-right: auto;
  margin-bottom: 12px;
}

.form__star {
  width: 7px;
  height: 12px;
  color: #787878;
}

.form__pc {
  width: 638px;
  height: fir-content;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}

.form__box {
  width: 24px;
  height: 24px;
  border: 2px solid #787878;
  border-radius: 7px;
  margin-left: 45px;
  margin-right: 10px;
}

@media screen and (max-width:768px) {
  .form__box {
    width: 32px;
    height: 32px;
  }
}

.form__checkbox {
  width: 100%;
  display: flex;
  flex-direction: row;
}

.form__text {
  width: 278px;
  height: 16px;
  font-weight: 400;
  font-size: 14px;
  line-height: 16px;
  color: #787878;
  margin-top: 3px;
}

@media screen and (max-width:768px) {
  .form__text {
    width: 358px;
    font-size: 18px;
  }
}

.form__send {
  width: 180px;
  height: 52px;
  background-color: #1A226B;
  border-radius: 10px;
  font-weight: 700;
  font-size: 24px;
  line-height: 16px;
  color: #FFFFFF;
  margin-left: auto;
  margin-right: auto;
  margin-top: 26px;
}

@media screen and (max-width:768px) {
  .form__send {
    width: 220px;
    height: 80px;
    font-size: 32px;
  }
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="../module_two_javascript/normalize.css">
  <link rel="stylesheet" href="../module_two_javascript/style.css">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
  <title>Form</title>
</head>

<body>

  <form class="form" id='form'>

    <h1 class="form__header">Вход</h1>
    <p class="form__preheader" id='preheader'>E-mail</p>
    <input class="form__field" type="text" id="e-mail" placeholder="Введите e-mail">
    <p class="form__error" id='error'>Поле обязательно для заполнения</p>
    <p class="form__preheader" id='preheaderpass'>Пароль</p>
    <input class="form__field" type="text" id="password" placeholder="Введите пароль">
    <p class="form__error" id='errorpass'>Поле обязательно для заполнения</p>
    <p class="form__error" id='errorpass2'>Пароль должен содержать как минимум 8 символов</p>

    <div class="form__pc">
      <div class=f orm__checkbox>
        <input class="form__box" type="checkbox" id="box" value='check'>
        <label for="box" class="form__text">Я согласен получать обновления на почту
        </label>
      </div>
      <p class="form__error" id='errorpass3'>Поле обязательно для заполнения</p>
    </div>

    <button class="form__send" id='btn' type="submit">
            Войти
    </button>
    <script src="..."></script>
</body>

</html>

javascript form
  • 2 个回答
  • 45 Views
Martin Hope
Kolamik
Asked: 2022-08-12 23:58:03 +0000 UTC

检查密码有效性的功能

  • 1

我正在尝试编写密码验证功能。该功能应检查密码的长度。如果未输入密码,请给出错误提示“必填字段”并以红色突出显示窗口。如果输入的密码少于 8 个字符,则会出现错误,并显示“密码必须包含至少 8 个字符”字样。如果满足条件,则窗口变为绿色。我试图通过与电子邮件验证类比来做到这一点。但该功能不起作用。你能帮我找出错误吗?

'use strict'

const emailChecker = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/iu;
const passCheck = (/^(?=.*\d).{8,15}$/).length;

const form = document.querySelector('#form');
const errorIsOn = document.querySelector('#error');
const preheader = document.querySelector('#preheader');
const emailField = document.querySelector('#e-mail');
const btn = document.querySelector('#btn');
const password = document.querySelector('#password');
const errorpass = document.querySelector('#errorpass');
const errorpass2 = document.querySelector('#errorpass2');



function isEmailValid(value) {
  return emailChecker.test(value);
}

function onInput() {
  if (isEmailValid(emailField.value)) {
    emailField.style.borderColor = 'green';

  } else {
    emailField.style.borderColor = 'red';
    errorIsOn.style.display = 'initial';
    preheader.style.color = 'red';
  }
}

emailField.addEventListener('keyup', onInput);

function isPasswordValid(value) {
  return passChecker.test(value);
}

function passValidation() {
  if (isPasswordValid(password.value.length <= 8)) {
    password.style.borderColor = 'red';
    errorpass.style.display = 'initial';
    preheader.style.color = 'red';
  } else if (isPasswordValid(password.value.length === 0)) {
    password.style.borderColor = 'red';
    errorpass2.style.display = 'initial';
    preheader.style.color = 'red';
  } else {
    password.style.borderColor = 'green';
  }
}

password.addEventListener('keyup', passValidation);
body {
  max-width: 1440px;
  max-height: 769px;
  background-color: #1B2473;
  display: flex;
  flex-direction: column;
  font-family: 'Roboto', sans-serif;
}

@media screen and (max-width:768px) {
  .body {
    max-width: 768px;
  }
}

.form {
  width: 600px;
  height: 412px;
  background: #FFFFFF;
  box-shadow: 0px 0px 40px 10px rgba(0, 0, 0, 0.25);
  border-radius: 20px;
  margin-left: auto;
  margin-right: auto;
  margin-top: 82px;
  display: flex;
  flex-direction: column;
}

@media screen and (max-width: 768px) {
  .form {
    width: 728px;
    height: 697px;
  }
}

.form__preheader {
  font-weight: 700;
  font-size: 16px;
  line-height: 16px;
  color: #787878;
  margin-left: 45px;
  margin-bottom: 7px;
}

@media screen and (max-width:768px) {
  .form__preheader {
    font-size: 24px;
  }
}

.form__header {
  width: 115px;
  height: 50px;
  font-weight: 700;
  font-size: 50px;
  line-height: 50px;
  color: #787878;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0px;
  margin-top: 26px;
}

@media screen and (max-width:768px) {
  .form__header {
    width: 138px;
    font-size: 60px;
  }
}

.form__field {
  width: 509px;
  height: 49px;
  background: #FFFFFF;
  border: 2px solid #787878;
  border-radius: 10px;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0px;
  font-weight: 700;
  font-size: 28px;
  line-height: 36px;
  color: #CCCCCC;
}

@media screen and (max-width:768px) {
  .form__field {
    width: 638px;
    height: 49px;
  }
}

.form__error {
  display: none;
  font-weight: 500;
  font-size: 10px;
  line-height: 16px;
  color: #CB2424;
  margin-left: 45px;
  margin-right: auto;
  margin-bottom: 12px;
}

.form__star {
  width: 7px;
  height: 12px;
  color: #787878;
}

.form__pc {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
}

.form__box {
  width: 24px;
  height: 24px;
  border: 2px solid #787878;
  border-radius: 7px;
  margin-left: 45px;
  margin-right: 10px;
}

@media screen and (max-width:768px) {
  .form__box {
    width: 32px;
    height: 32px;
  }
}

.form__text {
  width: 278px;
  height: 16px;
  font-weight: 400;
  font-size: 14px;
  line-height: 16px;
  color: #787878;
  margin-top: 3px;
}

@media screen and (max-width:768px) {
  .form__text {
    width: 358px;
    font-size: 18px;
  }
}

.form__send {
  width: 180px;
  height: 52px;
  background-color: #1A226B;
  border-radius: 10px;
  font-weight: 700;
  font-size: 24px;
  line-height: 16px;
  color: #FFFFFF;
  margin-left: auto;
  margin-right: auto;
  margin-top: 26px;
}

@media screen and (max-width:768px) {
  .form__send {
    width: 220px;
    height: 80px;
    font-size: 32px;
  }
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="src/style.css">
</head>

<body>
  <form class="form" id='form'>

    <h1 class="form__header">Вход</h1>
    <p class="form__preheader" id='preheader'>E-mail</p>
    <input class="form__field" type="text" id="e-mail" placeholder="Введите e-mail">
    <p class="form__error" id='error'>Поле обязательно для заполнения</p>
    <p class="form__preheader">Пароль</p>
    <input class="form__field" type="text" id="password" placeholder="Введите пароль">
    <p class="form__error" id='errorpass'>Поле обязательно для заполнения</p>
    <p class="form__error" id='errorpass2'>Пароль должен содержать как минимум 8 символов</p>

    <div class="form__pc">
      <input class="form__box" type="checkbox" id="box">
      <label for="box" class="form__text">Я согласен получать обновления на почту
        </label>
    </div>

    <button class="form__send" id='btn'>
            Войти
    </button>
    <script src="src/script.js"></script>
</body>

</html>

javascript валидация
  • 1 个回答
  • 54 Views
Martin Hope
Kolamik
Asked: 2022-08-11 19:16:10 +0000 UTC

检查电子邮件以进行验证

  • 0

我正在努力应对验证。有必要当电子邮件无效时,输入窗口以红色突出显示,当电子邮件有效时 - 绿色。在我看来,我似乎写了正确的逻辑,而错误在于一些小事。但是这个小东西我找不到并修复。如果您对错误嗤之以鼻,我将不胜感激))

const emailChecker = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/iu;
const emailField = document.querySelector('#e-mail');

function isEmailValid(value) {
  return emailChecker.test(value);
}

function onInput() {
  if (isEmailValid(emailField.value)) {
    emailField.style.borderColor = 'green';
  } else {
    emailField.style.borderColor = 'red';
  }
}

emailField.addEventListener('#e-mail', onInput);
body {
  max-width: 1440px;
  max-height: 769px;
  background-color: #1B2473;
  display: flex;
  flex-direction: column;
  font-family: 'Roboto', sans-serif;
}

@media screen and (max-width:768px) {
  .body {
    max-width: 768px;
  }
}

.form {
  width: 600px;
  height: 412px;
  background: #FFFFFF;
  box-shadow: 0px 0px 40px 10px rgba(0, 0, 0, 0.25);
  border-radius: 20px;
  margin-left: auto;
  margin-right: auto;
  margin-top: 82px;
  display: flex;
  flex-direction: column;
}

@media screen and (max-width: 768px) {
  .form {
    width: 728px;
    height: 697px;
  }
}

.form__preheader {
  font-weight: 700;
  font-size: 16px;
  line-height: 16px;
  color: #787878;
  margin-left: 45px;
  margin-bottom: 7px;
}

@media screen and (max-width:768px) {
  .form__preheader {
    font-size: 24px;
  }
}

.form__header {
  width: 115px;
  height: 50px;
  font-weight: 700;
  font-size: 50px;
  line-height: 50px;
  color: #787878;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 0px;
  margin-top: 26px;
}

@media screen and (max-width:768px) {
  .form__header {
    width: 138px;
    font-size: 60px;
  }
}

.form__field {
  width: 509px;
  height: 49px;
  background: #FFFFFF;
  border: 2px solid #787878;
  border-radius: 10px;
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 32px;
  font-weight: 700;
  font-size: 28px;
  line-height: 36px;
  color: #CCCCCC;
}

@media screen and (max-width:768px) {
  .form__field {
    width: 638px;
    height: 49px;
  }
}

.form__star {
  width: 7px;
  height: 12px;
  color: #787878;
}

.form__pc {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
}

.form__box {
  width: 24px;
  height: 24px;
  border: 2px solid #787878;
  border-radius: 7px;
  margin-left: 45px;
  margin-right: 10px;
}

@media screen and (max-width:768px) {
  .form__box {
    width: 32px;
    height: 32px;
  }
}

.form__text {
  width: 278px;
  height: 16px;
  font-weight: 400;
  font-size: 14px;
  line-height: 16px;
  color: #787878;
  margin-top: 3px;
}

@media screen and (max-width:768px) {
  .form__text {
    width: 358px;
    font-size: 18px;
  }
}

.form__send {
  width: 180px;
  height: 52px;
  background-color: #1A226B;
  border-radius: 10px;
  font-weight: 700;
  font-size: 24px;
  line-height: 16px;
  color: #FFFFFF;
  margin-left: auto;
  margin-right: auto;
  margin-top: 26px;
}

@media screen and (max-width:768px) {
  .form__send {
    width: 220px;
    height: 80px;
    font-size: 32px;
  }
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="src/style.css">
</head>

<body>
  <form class="form">

    <h1 class="form__header">Вход</h1>
    <p class="form__preheader">E-mail</p>
    <input class="form__field" type="text" id="e-mail" placeholder="Введите e-mail">
    <p class="form__preheader">Пароль</p>
    <input class="form__field" type="text" placeholder="Введите пароль">

    <div class="form__pc">
      <input class="form__box" type="checkbox" id="box">
      <label for="box" class="form__text">Я согласен получать обновления на почту
          </label>
    </div>

    <button class="form__send">
          Войти
      </button>

    <script src="src/script.js"></script>
</body>

</html>

javascript email
  • 1 个回答
  • 29 Views
Martin Hope
Kolamik
Asked: 2022-08-06 23:49:35 +0000 UTC

通过 fetch 请求时过滤数据

  • 1

我刚开始学习js。现在我正在履行承诺。任务如下:你需要向服务器发出请求,并从url中获取数据。有一个包含用户数据对象的数组。我只需要显示用户名。我写了一个请求,它有效,但我无法说出名字。请告诉我我的错误是什么?

let delay = ms =>{
 return new Promise (resolve => setTimeout(() => resolve(), ms))
}

const url = 'https://reqres.in/api/users?=per_page';

function fetchRequest(){
  console.log('Делаем запрос на получение данных по 12 пользователям')
  return delay(1000).then(() =>{
    return fetch(url);
  }).then(response => response.json())
}

fetchRequest()
.then(data => {
  console.log('Data:', data);

let usersLastName = data.reduce((item) => {
   return item.last_name;
},{})

console.log ('Фамилии всех 12 пользователей', usersLastName);
})

.catch (e => console.error(e));
api массивы
  • 1 个回答
  • 37 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5