需要从某个具有大概结构的目录中
dir
a-sub1
a-sub2
preview.png
b-sub2
preview.png
b-sub1
c-sub2
preview.png
除了这些子目录和文件之外,preview.png
还有其他的文件,包括在这些子目录中,其他的子目录。你只需要复制这个结构,即 文件preview.png
及其 2 级子目录。
需要从某个具有大概结构的目录中
dir
a-sub1
a-sub2
preview.png
b-sub2
preview.png
b-sub1
c-sub2
preview.png
除了这些子目录和文件之外,preview.png
还有其他的文件,包括在这些子目录中,其他的子目录。你只需要复制这个结构,即 文件preview.png
及其 2 级子目录。
我有一个url.txt
包含URL
换行符的文本文件,仅此而已。
https://ru.stackoverflow.com
https://stackoverflow.com
https://meta.stackoverflow.com
我需要获取HTTP
每个的-code URL
。
curl -ILks https://ru.stackoverflow.com | awk '/^HTTP/{print $2}'
curl -ILks https://stackoverflow.com | awk '/^HTTP/{print $2}'
curl -ILks https://meta.stackoverflow.com | awk '/^HTTP/{print $2}'
并得到这样的输出
200 https://ru.stackoverflow.com
200 https://stackoverflow.com
200 https://meta.stackoverflow.com
帮助我编写一个优雅的脚本,该脚本将文件作为输入url.txt
并stdout
输出所需的响应。
如何bash
使用文本文件中的一行作为参数逐行迭代文本文件,这可以使用awk
and/or来完成吗sed
?
PHP 7.3.4(无法检查旧版本,但我认为这不是问题)
$f = 1.001 * 1000;
$i = (int)$f;
var_dump($f, $i);
浮动(1001) 整数(1000)
为什么将 float(1001) 与 (int) 相乘后转换为1000
而不是1001
?为什么在 1001 * 1.0 之后,以及在 (float)1001 之后正常转换为1001
?
PS这些不是对数,是吗?在我看来,转换为 (int) 的算法会将操作数转换为字符串,然后遍历每个字符以匹配 0-9,即 丢弃除数字以外的所有多余内容,如果这是一串数字,则将其作为数字返回。
事实证明,(int) 算法的行为方式完全不同且出乎意料。
到处都是一样的东西!
Значений dkim= может быть три:
all — Все письма должны быть подписаны
discardable — Не подписанные письма не должны приниматься
unknown — Аналогично отсутствию записи
我需要最严格的选项,以便所有字母都签名并且所有未签名的字母都被拒绝。但是基于这些定义,据我所知,我要么必须选择其中之一,要么必须同时指定它们。
现代(c++11
及以后)如何在类中声明静态变量,是否有可能做到这一点?
#include <iostream>
#include <string>
using namespace std;
int main()
{
class Class
{
static const short unsigned id = 1;
static const string name = "Заголовок 1";
public:
static short unsigned getId()
{
return id;
}
static string getName()
{
return name;
}
};
cout<<Class::getId()<<' '<<Class::getName()<<endl;
return 0;
}
我已经明白你只能从外部初始化静态类变量,或者只有当它们是常量时才可以,但这根本不起作用。
g++ -Wall -march=native -msse3 -O3 -fomit-frame-pointer -pipe -o "oop" "oop.cpp" (в каталоге: /home/ilya/Downloads/Qt)
oop.cpp: В функции «int main()»:
oop.cpp:10:36: ошибка: локальный класс «class main()::Class» не должен иметь статический элемент данных «const short unsigned int main()::Class::id» [-fpermissive]
static const short unsigned id = 1;
^
oop.cpp:11:30: ошибка: локальный класс «class main()::Class» не должен иметь статический элемент данных «const string main()::Class::name» [-fpermissive]
static const string name = "Заголовок 1";
^~~~~~~~~~~~~~~~~~~~~~
oop.cpp:11:23: ошибка: инициализация внутри класса статического элемента данных «const string main()::Class::name» нелитерального типа
static const string name = "Заголовок 1";
^~~~
oop.cpp:11:30: ошибка: вызов non-constexpr функции «std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [с _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]»
static const string name = "Заголовок 1";
^~~~~~~~~~~~~~~~~~~~~~
Сборка завершилась с ошибкой.
如果你从外面确定。
#include <iostream>
#include <string>
using namespace std;
int main()
{
class Class
{
public:
static short unsigned id;
static string name;
};
Class::id = 1;
Class::name = "Заголовок 1";
cout<<Class::id<<' '<<Class::name<<endl;
return 0;
}
那仍然行不通。
g++ -Wall -march=native -msse3 -O3 -fomit-frame-pointer -pipe -o "oop" "oop.cpp" (в каталоге: /home/ilya/Downloads/Qt)
oop.cpp: В функции «int main()»:
oop.cpp:11:25: ошибка: локальный класс «class main()::Class» не должен иметь статический элемент данных «short unsigned int main()::Class::id» [-fpermissive]
static short unsigned id;
^~
oop.cpp:12:17: ошибка: локальный класс «class main()::Class» не должен иметь статический элемент данных «std::__cxx11::string main()::Class::name» [-fpermissive]
static string name;
^~~~
Сборка завершилась с ошибкой.
为什么会发生这种情况,我做错了什么?
#include <iostream>
using namespace std;
int main()
{
auto l = 4;
cout << l << endl;
return 0;
}
编译器将设置什么完整类型l
?
[const] short|int|long [signed|unsigned]
如何定义它?
检查MySQL 5.7.19和MariaDB 10.2.8的结果是相似的。
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`
(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`code` INT UNSIGNED NOT NULL UNIQUE,
`title` VARCHAR(16) NOT NULL
)
ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT IGNORE INTO `test`(`code`,`title`) VALUES (1, 'Title 1');
INSERT IGNORE INTO `test`(`code`,`title`) VALUES (1, 'Title 1');
INSERT IGNORE INTO `test`(`code`,`title`) VALUES (1, 'Title 1');
INSERT IGNORE INTO `test`(`code`,`title`) VALUES (2, 'Title 2');
SELECT * FROM `test`;
而不是预期的:
1, 1, Title 1
2, 2, Title 2
我得到:
1, 1, Title 1
4, 2, Title 2
也就是INSERT IGNORE,即使它不插入数据,它仍然会自增。
这是记录在案的行为吗?
这是为什么?
除了将所有INSERT放入 1 个查询之外,可以做些什么,它可以按预期工作,但不能解决明显的问题,当然,除了如何在插入单独的SELECT查询之前检查丢失的数据。
PS 作为最后的手段,如果可以检查是否缺少数据并将此数据插入到 1 个请求中,它甚至会适合我,但首先我感兴趣的是为什么会发生这种情况,баг
这个或фича
?
需要将 string-needle 应用needle
'аргентинаманитнегра'
到 string-stackhaystack
' Аргентина пр ро Аргентина манит негра бдщ негра '
上,才能得到输出结果 - 'Аргентина манит негра'
。
最优雅的方法是什么,是否可以通过正则表达式一步完成?
要处理一个多边形,或者更确切地说,最大的子多边形,我无法想象如果不降低字符串和删除空格怎么办,但我想,一般来说,根据分配,有必要将它带入这个形式。
我不是很擅长正则表达式,所以我想也许它可以比我现在尝试做的更优雅地完成,计算一堆子串,它们的长度,来自不同位置的带有空格的子串,它们的长度并切出mb_substr
来自某些行的位置和长度的结果字符串?:-)
' Аргентина пр ро Аргентина манит негра бдщ негра '
'аргентинаманитнегра'
'Аргентина манит негра'
与文档相反,用 声明的块可见变量let
只能以Firefox 44
and开头Chromium 49
。同时,浏览器(Chrome 47
)读取构造后let=
报错,停止所有脚本的执行。
1 如何识别浏览器是否正在使用块变量let
而不诉诸解析userAgent
-a?
2 我已经对仿真保持沉默,但如果浏览器不知道如何使用,是否可以let
创建/覆盖?alias
var
let
3 是否可以使块变量let
在旧版本Chromium
和上工作Samsung Internet
?
我正在编写一个update
用于使用 DBMS的查询构建器MariaDB
,它支持使用一个查询进行组更新,并且能够AND
在WHERE
.
它已经适用于WHERE
构造函数中的一个标准,但尚无法修改它以适用于多个标准。
测试数据:
CREATE TABLE `tbl_user_message`
(
`fid` INT UNSIGNED NOT NULL,
`tid` INT UNSIGNED NOT NULL,
`new` TINYINT UNSIGNED,
`f_hide` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`t_hide` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`message` VARCHAR(5000) NOT NULL,
`date` INT UNSIGNED NOT NULL,
PRIMARY KEY(`date`,`fid`),
KEY(`fid`),
KEY(`tid`)
)
ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO `tbl_user_message`
(`fid`,`tid`,`new`,`message`,`date`)
VALUES
(4,1,1,'To me',1483399609),
(1,4,1,'From me',1483399734);
SELECT * FROM `tbl_user_message`;
TRUNCATE `tbl_user_message`;
当前的任务是批量更新表中仅有的两行,将它们的字段设置new
为 DEFAULT 和t_hide
1,分别在主键 ( date
AND fid
) 上更新它们。
我找到了 2 个解决问题的选项,但我对 argument 有疑问DEFAULT
,但NULL
一切正常。
https://stackoverflow.com/a/15344247/6254425
UPDATE `tbl_user_message` SET
`new` = CASE
WHEN `date`=1483399609 AND `fid`=4 THEN DEFAULT
WHEN `date`=1483399734 AND `fid`=1 THEN DEFAULT
ELSE `new` END,
`t_hide` = CASE
WHEN `date`=1483399609 AND `fid`=4 THEN 1
WHEN `date`=1483399734 AND `fid`=1 THEN 1
ELSE `t_hide` END
WHERE `date` IN (1483399609,1483399734) AND `fid` IN (4,1);
https://stackoverflow.com/a/26915648/6254425
UPDATE `tbl_user_message` SET
`new` = CASE
WHEN `date`=1483399609 AND `fid`=4 THEN DEFAULT
WHEN `date`=1483399734 AND `fid`=1 THEN DEFAULT
END,
`t_hide` = CASE
WHEN `date`=1483399609 AND `fid`=4 THEN 1
WHEN `date`=1483399734 AND `fid`=1 THEN 1
END
WHERE (`date`=1483399609 AND `fid`=4) OR (`date`=1483399734 AND `fid`=1);
1为什么查询不能DEFAULT
作为返回参数使用CASE
但NULL
没问题?
PS 向字段显式指示 DEFAULT NULLnew
并不能解决问题。
https://mariadb.com/kb/en/mariadb/case-operator
2这些查询中哪个更优化、更可靠、更安全?一个ELSE
在WHERE
through中也有标准IN
,在另一个ELSE
中没有标准,但在WHERE
through AND
+中满足标准OR
。考虑到我的主键,什么样的结构和在什么情况下最适合我的例子?
3个
UPDATE `tbl_user` SET `status`=1 WHERE `id`=1 LIMIT 1;
LIMIT 1
鉴于此,此查询是否从约束中受益id
PRIMARY KEY
?LIMIT
限制-requests有什么好处UPDATE
,如果有,在什么情况下?
手机内存卡,FS为fat32,一个12GB数据的文件夹莫名其妙的从根目录下消失了。同时,它在地图上占用空间,但不在可用文件中。还有一个奇怪的文件,名字无效,只有 153MB。
一般来说,hunting 恢复,而在linux下。
如果我复制到 ext4,那么R-Linux就没有问题并继续,但是带有fat的免费R-Linux不起作用,而且我没有在Linux下找到损坏的R-Studio 。
有很多免费的控制台实用程序,例如photorec,但它们既不恢复保存路径也不恢复文件名,结果只是一些混乱。
Linux下是否有与fat一起使用的免费文件恢复实用程序,能够浏览文件树并选择要恢复的内容(如果可能),并使用原始路径和名称进行恢复?
或者告诉我在哪里可以下载损坏的R-Studio for Linix或类似程序?
我正在为在线交易平台制作计费系统。在表格中tbl_user
- 用户,tbl_billing_refill
- 余额充值,tbl_billing
- 购买/销售(如果id
用户匹配buid
- 这是他的购买,如果匹配 -suid
这是他的销售)
id
当前的任务是正确计算=1的特定用户的余额。
简化的测试数据。
CREATE TABLE `tbl_user`
(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(32)
)
ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO `tbl_user` (`name`) VALUES ('Вася'), ('Петя'), ('Боря');
CREATE TABLE `tbl_billing_refill`
(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`uid` INT UNSIGNED NOT NULL,
`sum` DECIMAL(9,2) NOT NULL
)
ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO `tbl_billing_refill` (`uid`, `sum`) VALUES
(1, 1), (1, 10), (1, 100), (1, 100), (2, 2), (2, 20), (3, 300);
CREATE TABLE `tbl_billing`
(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`buid` INT UNSIGNED NOT NULL,
`suid` INT UNSIGNED NOT NULL,
`sum` DECIMAL(9,2) UNSIGNED NOT NULL
)
ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO `tbl_billing` (`buid`,`suid`,`sum`) VALUES
(1, 3, 1), (1, 2, 10), (1, 2, 10), (1, 2, 100), (2, 1, 2), (2, 1, 2), (2, 1, 20), (3, 1, 300);
请求是这样提出的:
1 我将用户表作为一个保证包含id
用户数据的表,这样就可以附加一些东西,否则我不需要它的数据。
2 我需要一个OUTER
JOIN,因为除 外的任何表tbl_user
,一次全部包含在内,可能不包含有关此用户的数据。同样,我使用IFNULL
从NULL
一个包含空数据的表转换为0
.
3GROUP BY u.id
包括在内,因为我使用了聚合函数SUM
,这需要,或者在 10.0 之前要求强制分组。从 10.0 开始,MariaDB 中的查询已经在没有它的情况下运行,但我出于习惯而放了它。
如果你有这个问题,请解释我做的是否正确?
4 当前余额计算如下(存款总和)-(购买总和)+(销售总和)对于用户c id
=1(1+10+100+100)-(1+10+10+100)+ (2+2+20) +300) = 211 - 121 + 324 = 414
SELECT (IFNULL(SUM(r.sum),0) - IFNULL(SUM(b.sum),0) + IFNULL(SUM(s.sum),0)) `sum`
FROM tbl_user `u`
LEFT JOIN tbl_billing_refill `r` ON u.id=r.uid
LEFT JOIN tbl_billing `b` ON u.id=b.buid
LEFT JOIN tbl_billing `s` ON u.id=s.suid
WHERE u.id=1 GROUP BY u.id;
但问题是,请求返回的不是预期的4146624
,而是= 414 * 16,即相同的数据被复制了 16 次。
通常,在这种情况下,当我有COUNT
( id
) 时,我会把所有东西都放进去DISTINCT
,一切COUNT
都会正常工作。我知道我是在掩盖原因而不消除影响,但我不了解原因,也无法消除它。现在是这种情况,当你不能再把它放在SUM
( sum
)DISTINCT
中时,因为它会删除必要的重复项,我在测试数据中特别包含了这些重复项。
帮助我正确和优化地撰写请求并展示如何消除这个原因,我一直用DISTINCT
-th 掩盖这个原因,这样我就不会再这样做了。:-)
是否可以left
通过更改类来实现忽略父级的 margin:0 auto ?
.wrapper
{
width:300px;
margin:0 auto;
}
main
{
margin:0 auto;
}
.left
{
margin:0;
}
<div class="wrapper">
<main>
<div class="left">Этот блок должен быть слева.</div>
<div>Этот блок должен быть по центру.</div>
</main>
</div>
出自http://htmlbook.ru/html/main
该元素<main>
用于文档的主要内容。内容应该是唯一的,不包括网站页眉、页脚、导航、侧边栏、搜索表单等典型块。
.wrapper
{
width:300px;
margin:0 auto;
}
.left
{
margin:0;
}
main
{
margin:0 auto;
}
<div class="wrapper">
<div class="left">Этот блок должен быть слева.</div>
<main>
<div>Этот блок должен быть по центру.</div>
</main>
</div>
这是正确的并且在网站上有效,在示例中它不起作用,可能是因为宽度不受限制。但是既然我问了这样的问题,我想知道是否可以从第一个例子开始这样做?
我使用 on postfix
rbl
-lists fromzen.spamhaus.org
和dnsbl.sorbs.net
。IP
在我不得不DUHL
从这些数据库中删除我自己的列表之后,我的选择落在了这些列表上,而且,在spamhaus
一个比sorbs
.
问题出现了,我需要这两个列表吗?
两者的搜索是否会减慢邮件的接收/发送速度以及如何签入postfix
?
他们是否使用相同地址的列表,如果列表选择其中之一,如果是,选择哪个,为什么?
哪个更快,哪个更可靠?
你能根据个人经验推荐更快和/或更可靠的列表吗?
我想为虚拟域 (example.ua) 创建一个 postmaster 别名,一个不存在的虚拟用户 postmaster@example.ua 的邮件来到了一个现有的虚拟用户 user@example.ua 的邮箱
一些行来自postconf
alias_maps = hash:/etc/aliases
compatibility_level = 2
local_recipient_maps = $alias_maps
mydestination = localhost.$mydomain, localhost
mydomain = $myhostname
relay_domains = $mydestination, hash:/etc/postfix/relay
setgid_group = maildrop
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_sasl_authenticated, reject_unknown_hostname
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination, reject_unknown_client, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_hostname, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unverified_recipient
smtpd_relay_restrictions = permit_sasl_authenticated, reject_unauth_destination, reject_unknown_client, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_hostname, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unverified_recipient
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_sasl_authenticated, reject_unauth_destination, reject_unknown_client, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_hostname, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unverified_recipient
strict_rfc821_envelopes = yes
virtual_alias_domains = $myhostname
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_gid_maps = static:303
virtual_mailbox_base = /srv/vmail
virtual_mailbox_domains = $myhostname, subdom.$myhostname
virtual_mailbox_lock = fcntl
virtual_minimum_uid = 303
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = static:303
/etc/后缀/虚拟
postmaster@example.ua user@example.ua
sudo postmap /etc/postfix/virtual
但是当向postmaster@example.ua
postfix 发送邮件时,它会拒绝它并显示这样的用户不存在的消息。
NOQUEUE: reject: RCPT from forward7m.cmail.yandex.net[5.255.216.200]: 450 4.1.1 <postmaster@example.ua>: Recipient address rejected: unverified address: host example.ua[private/dovecot-lmtp] said: 550 5.1.1 <postmaster@example.ua> User doesn't exist: postmaster@example.ua (in reply to RCPT TO command); from=<user@yandex.ua> to=<postmaster@example.ua> proto=ESMTP helo=<forward7m.cmail.yandex.net>
是否可以在不创建用户和框的情况下进行/etc/dovecot/users
?
postfix
我在+ dovecot
c SASL、TLS上设置了一个虚拟邮件服务器。
无法接收信件,不会在 vmail 中创建具有域和名称的文件夹,并且在尝试将 pop3 服务器连接到面部时,gmail
会出现错误:
Сервер отказал в доступе по протоколу POP3 для данного имени пользователя и пароля.
Ошибка сервера: "[SYS/TEMP] Internal error occurred. Refer to server log for more information."
同时,在/var/log/mail.err
dovecot: doveconf: Fatal: execvp(/usr/lib/dovecot/managesieve) failed: Argument list too long
dovecot: config: Error: managesieve-login: dump-capability process returned 89
只有我不明白如何managesieve
处理它以及如何调试它?这些文件managesieve
也managesieve-login
存在/usr/lib/dovecot
,但我不清楚它们缺少什么。告诉我在哪里挖掘,这里可能有什么问题?
doveconf -nP
# 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 (fed8554)
doveconf: Fatal: execvp(/usr/lib/dovecot/managesieve) failed: Argument list too long
doveconf: Error: managesieve-login: dump-capability process returned 89
# OS: Linux 4.8.13-1-default x86_64
auth_debug = yes
auth_debug_passwords = yes
auth_verbose = yes
auth_verbose_passwords = yes
debug_log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot.log
mail_debug = yes
mail_gid = vmail
mail_home = /var/lib/vmail/%d/%n
mail_location = maildir:~/Maildir
mail_uid = vmail
mbox_write_locks = fcntl
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
args = scheme=ssha512 username_format=%u /etc/dovecot/users
driver = passwd-file
}
plugin {
sieve = file:~/sieve;active=~/.dovecot.sieve
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
}
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
user = vmail
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
ssl_ca = </etc/path/to/ca.crt
ssl_cert = </etc/path/to/cert.crt
ssl_cipher_list = ALL:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
ssl_client_ca_dir = /etc/ssl/certs
ssl_client_ca_file = </etc/ssl/ca-bundle.pem
ssl_dh_parameters_length = 2048
ssl_key = </etc/path/to/key.key
ssl_options = no_compression
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3
userdb {
args = username_format=%u /etc/dovecot/users
driver = passwd-file
}
verbose_ssl = yes
需要AJAX
通过分配一个新的块来定期重写块的内容innerHTML
,同时将处理程序分配给该块的子元素,通过element.addEventListener
它我没有明确删除,同时时间,添加元素后,我也注册新的。在大多数情况下,旧块的内容与新块完全相同,但我仍然覆盖它并重新分配处理程序。
我想知道,当覆盖块的子元素时,innerHTML
它们声明的处理程序是否也与所有子元素一起被删除,或者它们是否与我每次重新注册的新元素一起保留?
如果是这样,这是否也发生在element.remove()
and上parent.removeChild(element)
?
站点需要显示相对于每个用户本地时区的时间。我将日期存储在服务器上unixtimestamp
。起初我想到将时区与用户配置文件一起存储在服务器上,同时javascript
第一次自动定义它,然后让用户有机会更改它。
但是,事实证明,javascript
它不知道如何timezone
从操作系统中确定,此外,它根本不知道如何使用时区,而只能使用偏移量。
为此,您需要要求用户手动指定当前时区,无需自动检测,并ajax
使用 PHP 计算偏移量并将其传递给javascript
.
但这一切都太难了。现代用户是如此懒惰和愚蠢,原则上他可能不知道他的时区名称,并错误地指示它,没有自动检测提示,向用户询问这个问题是无利可图的。另一方面,流行的社交网络和视频托管网站可以很好地完成这项任务,并且不会要求用户指定时区。
这是一个问题,我如何在不要求用户指明他的时区的情况下,在每个用户的本地时区中使用 , 显示时间PHP
,JS
例如,VKontakte 和 YouTube 如何解决这个问题?
在freetype
version2.6.4
和 after and in2.7
中出现了一种新的提示模式,默认使用。如何返回旧的提示模式?
这个问题不是重复的,因为它不仅涵盖了闭包,还涵盖了其他常见的 JS 错误和使用 ES 2015 规范的新功能进行的修复。
迭代元素时,它无法为click
迭代元素正确注册事件处理程序。所有迭代元素的事件都由一个用于最近元素的匿名函数注册。
按想法。1 将鼠标悬停在fieldset
消息上时,每条消息的删除图标会高亮显示,当鼠标移开时,相应消息的删除图标会再次消失。2 当您将鼠标悬停在删除图标上时,会弹出一个工具提示以及相应消息的时间。3 当点击相应删除消息的图标时,会弹出相应消息时间的提示。
我有。1 将鼠标悬停在任何fieldset
消息上时,删除最后一条消息的图标会高亮显示,当您将鼠标移开时,删除最后一条消息的图标会再次消失。2 这是唯一可以正常工作的东西。3 当您单击任何消息的删除图标时,会弹出一条提醒消息以及最后一条消息的时间。
我做错了什么,我在这里不理解什么,我该如何做对?
window.addEventListener('load',function()
{
var imgs=document.getElementsByClassName('right')[0].getElementsByClassName('del');
for(var i=0,l=imgs.length;i<l;i++)
{
var img=imgs[i];
var doc=document.getElementById('mes-'+img.dataset.date+'-'+img.dataset.fid);
doc.addEventListener('mouseover',function(){img.style.opacity=1;});
doc.addEventListener('mouseout',function(){img.removeAttribute('style');});
img.setAttribute('title','Delete '+img.dataset.title+' message');
img.addEventListener('click',function()
{
if(!isNaN(img.dataset.date)&&img.dataset.date>0&&!isNaN(img.dataset.fid)&&img.dataset.fid>0&&img.dataset.title)
alert('Are you sure you want to delete '+img.dataset.title+' message?');
});
}
});
*
{
margin:0;
padding:0;
border:0;
border-radius:5px;
transition:all 0.2s linear;
}
html,body
{
height:100%;
min-height:100%;
}
body
{
background-color:#fff;
color:#000;
font:12px/18px Arial,Helvetica,sans-serif;
margin:0 auto;
}
fieldset
{
border:1px solid #ccc;
}
legend
{
font-weight:bold;
}
div.message
{
min-width:400px;
width:400px;
max-height:400px;
margin:0 auto;
padding:10px;
text-align:center;
}
div.message div.left, div.message div.right
{
float:left;
height:100%;
overflow:auto;
}
div.message div.right
{
width:250px;
text-align:center;
}
div.message div.right hr
{
border-top:1px solid #ccc;
margin-top:10px;
}
div.message div.right hr+span
{
background-color:#fff;
font-weight:bold;
padding:0 10px;
position:relative;
bottom:10px;
}
div.message div.right fieldset
{
margin:0 0 10px;
padding:10px;
text-align:left;
position:relative;
}
div.message div.right fieldset.from
{
margin-right:50px;
border-color:#6f6;
background-color:#dfd;
color:#040;
}
div.message div.right fieldset.to
{
margin-left:50px;
border-color:#66f;
background-color:#ddf;
color:#004;
}
div.message div.right fieldset img.del
{
width:16px;
top:0;
right:8px;
}
div.message img.del
{
position:absolute;
opacity:0.3;
}
div.message img.del:hover
{
cursor:pointer;
opacity:1;
}
<!DOCTYPE html>
<html lang="ru-ru" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Test</title>
</head>
<body>
<div class="message">
<div class="left"></div>
<div class="right">
<hr/><span>08.10.2016</span>
<fieldset class="from" id="mes-1475888362-1">
<legend>Ilya Indigo <span>03:59</span></legend>
<img class="del" data-date="1475888362" data-fid="1" data-title="03:59" src="http://dolinasnov.com/uploads/delete.png" alt="del"/>
<p>Тестовое сообщение<br/>новая строка<br/>ещё одна строка<br/>и ещё одна строка.</p>
</fieldset>
<fieldset class="from" id="mes-1475888608-1">
<legend>Ilya Indigo <span>04:03</span></legend>
<img class="del" data-date="1475888608" data-fid="1" data-title="04:03" src="http://dolinasnov.com/uploads/delete.png" alt="del"/>
<p>Ещё одно.</p>
</fieldset>
<fieldset class="to" id="mes-1475889423-2">
<legend>Ilya Indigo 2 <span>04:17</span></legend>
<img class="del" data-date="1475889423" data-fid="2" data-title="04:17" src="http://dolinasnov.com/uploads/delete.png" alt="del"/>
<p>Отвечаю.</p>
</fieldset>
<fieldset class="from" id="mes-1475892511-1">
<legend>Ilya Indigo <span>05:08</span></legend>
<img class="del" data-date="1475892511" data-fid="1" data-title="05:08" src="http://dolinasnov.com/uploads/delete.png" alt="del"/>
<p>Ещё одно.</p>
</fieldset>
</div>
</div>
</body>
</html>
答案:声明所有变量的最简单和最快的方法是let
使用var
.