有这个CSS:
a[href^="tel:"] {
pointer-events: none;
}
整个条目被停用cursor pointer
,并且在链接处调用调用href="tel:798877665567"
我想了解此条目中的符号是什么意思^
?
有一个具有无限嵌套级别的垂直菜单目录。我遇到了一个问题 - 我无法为其打开和关闭设置动画。该属性display
也没有动画height
。有另一种选择max-height
,但这一切都太麻烦了。
这是一个示例,所有项目Sub
都有一个嵌套的子菜单。
document.querySelector('.root-nav').onclick = function(event) {
if (event.target.nodeName !== 'SPAN') return
closeAllSubMenu(event.target.nextElementSibling)
event.target.classList.add('submenu-active-span')
event.target.nextElementSibling.classList.toggle('submenu-active')
}
function closeAllSubMenu(currentMenu = null) {
const parents = []
if (currentMenu) {
let currentParent = currentMenu.parentNode
while(currentParent) {
if (currentParent.classList.contains('root-nav')) break
if (currentParent.nodeName === 'UL') parents.push(currentParent)
currentParent = currentParent.parentNode
}
}
const allSubMenu = document.querySelectorAll('.root-nav ul')
Array.from(allSubMenu).forEach(item => {
if (item !== currentMenu && !parents.includes(item)) {
item.classList.remove('submenu-active')
if (item.previousElementSibling.nodeName === 'SPAN') {
item.previousElementSibling.classList.remove('submenu-active-span')
}
}
})
}
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.root-nav {
width: 300px;
}
.root-nav li {
list-style-type: none;
background-color: coral;
padding-left: 0;
position: relative;
}
.root-nav a, .root-nav span {
text-decoration: none;
color: white;
display: block;
padding: 5px 10px;
cursor: pointer;
}
.root-nav ul {
display: none;
width: 100%;
}
ul.submenu-active {
display: block;
padding-left: 20px;
}
span.submenu-active-span {
background-color: crimson;
}
<ul class="root-nav">
<li><a href="#">Link 1</a></li>
<li>
<span>Sub 1</span>
<ul>
<li><a href="#">Link 10</a></li>
<li><a href="#">Link 20</a></li>
<li><a href="#">Link 30</a></li>
<li><a href="#">Link 40</a></li>
</ul>
</li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
<li>
<span>Sub 2</span>
<ul>
<li><a href="#">Link 50</a></li>
<li><a href="#">Link 60</a></li>
<li>
<span>Sub 20</span>
<ul>
<li><a href="#">Link 100</a></li>
<li><a href="#">Link 200</a></li>
<li>
<span>Sub 3</span>
<ul>
<li><a href="#">Link 1000</a></li>
<li><a href="#">Link 2000</a></li>
<li><a href="#">Link 3000</a></li>
<li><a href="#">Link 4000</a></li>
</ul>
</li>
</li>
<li><a href="#">Link 400</a></li>
</ul>
</li>
<li><a href="#">Link 80</a></li>
</ul>
</li>
</ul>
也许有人知道如何平滑地显示无限嵌套的垂直菜单?
我正在 node+express 上编写注册/授权 API。在任何情况下,路由/registration
都应该返回一个像这样的 json 对象:
{
"registered": false, // Есть или нет такой email в базе
"error": false, // Есть ли ошибки валидации
"message": "" // Пишем сообщение что именно не так
}
在客户端,我会阅读这个答案并做出相应的反应。该对象由以下代码构成:
const express = require('express')
const router = express.Router()
const db = require('./dbConnection')
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const { isEmail } = require('./emailValidator.js')
router.post('/registration', (req, res) => {
const email = req.body.email.toLowerCase()
// Основа будущего json-объекта с ответом
let registered = false
let error = false
let message = ''
// Валидация email
if (email == '') {
// Если email пустой
error = true
message = 'Email is empty'
} else if (!isEmail(email)) {
// Если email не корректен
error = true
message = 'Email is incorrect'
}
// Проверим, существует ли такой email в базе данных
db.query(`SELECT * FROM users WHERE email = ${db.escape(email)}`, (err, result) => {
if (result.length) {
// Если что-то вернулось, значт email уже зарегистрирован
// Меняем данные ответа
registered = true
error = true
message = 'This email already in use'
// Проблема здесь. Переменные недоступны снаружи, return не помогает.
} else {
// Если email ранее не регистрировался, пишем его в базу
// registered, error, message остаются дефолтными
}
})
// Возвращаем финальный объект с ответом
const response = { registered, error, message }
res.status(200).json(response)
})
在代码中,我写了我无法获取变量的地方,以将它们添加到响应 json 对象中。怎么把它们弄到外面去?
UPD 这个问题已经失去了相关性。截至03/08/2022,Upwork已停止在俄罗斯和白俄罗斯注册新账户,旧账户将暂停至05/01/2022。加班就是一切。
Upwork 已更新警告。我引用。
现在,我们想指出以下重要限制:
PayPal、MasterCard 和 Visa 将不再继续为俄罗斯的客户提供服务,其他金融机构可能会对俄罗斯和白俄罗斯进行类似的更改,我们会在可能的情况下通知您。
地理制裁并不限制您与乌克兰、俄罗斯或白俄罗斯的自由职业者或客户合作,除非客户位于乌克兰的顿巴斯地区,拜登总统的行政命令中将其描述为“所谓的顿涅茨克人民共和国 (DPR)或乌克兰卢甘斯克人民共和国 (LNR) 地区”。
如何理解这个消息?我读到俄罗斯自由职业者可以工作,但他们不能提取资金。
如果有人理解该主题或已经遇到输出问题,请分享信息或发表评论。
我正在用 Vue 编写一个小型投资组合应用程序。用了路由器。我组装了站点,将其上传到服务器,这就是发生的事情,当我转到主页时,一切正常,单击链接打开页面。但是如果直接进入内部页面,就会显示错误——找不到页面。
例如,如果您先访问 site.ru,然后通过导航访问 site.ru/page,则所有页面都会打开。如果您立即访问 site.ru/page,则会显示错误。逻辑很清楚,SPA 仅从主页加载,然后导航链接开始工作。但是,如何向某人发送内部页面的链接或将其添加为书签?
我读到您需要在路由器中设置 mode: 'history' ,但这没有帮助。我也没有在文档中找到任何内容。
这是我的路由器文件:
import { createRouter, createWebHistory } from 'vue-router'
const routes = [
{
path: '/',
name: 'Home',
component: () => import('../views/Home.vue')
},
{
path: '/trainer',
name: 'Trainer',
component: () => import('../views/Trainer.vue')
},
{
path: '/404',
name: '404',
component: () => import('../views/NotFound.vue')
},
{
path: '/:catchAll(.*)',
redirect: '/404'
}
]
const router = createRouter({
mode: 'history', //(не помогает)
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
如何设置 SPA 以便可以直接访问任何内部链接,就像常规站点一样?