Class 应该是 shown/hidden,这取决于它的内容 - 但它只会被隐藏
Class should be shown/hidden, depending on its content - but it only gets hidden
我正在处理 PHP-聊天。
当用户登录时,他会自动发送一条消息 "logged in" 显示给所有人,当他注销时,他会自动发送 "logged out" 显示给所有人(当然除了他)。
当所有用户注销时,所有消息都会自动删除。
我现在正在开发一个功能,可以告诉您聊天室中是否只有您一个人。
我想使用 JavaScript 来解决这个问题。我现在使用的脚本统计"logged in"和"logged out"这个词在聊天记录中出现的频率(是的,不是最终的解决方案,但绝对足够我使用)
代码如下:
function countverlassen(){
var temp = document.body.innerText;
// the g in the regular expression says to search the whole string
// rather than just find the first occurrence
var countverlassen = (temp.match(/verlassen/g) || []).length +1;
console.log(countverlassen);
}
function countbetreten(){
var temp = document.body.innerText;
// the g in the regular expression says to search the whole string
// rather than just find the first occurrence
var countbetreten = (temp.match(/betreten/g) || []).length;
console.log(countbetreten);
if (countbetreten >= 2 && countbetreten != countverlassen){
$('.alleine').hide();
}
else if (countverlassen >= 2 && countbetreten == countverlassen) {
$('.alleine').show();
}
}
class "alleine" 仅包含文本 "You are alone in here right now"。
当另一个用户登录时,这应该被隐藏,当除您之外的所有其他用户注销时,它应该再次显示。
隐藏 class 效果很好,但当其他人都注销时它不会再次出现。
您可以在此处查看实际效果:http://team3.digital-cultures.net/index.php#
只需选择一个名称并从下拉列表中选择一个起点/目的地。
我做错了什么?
谢谢!
编辑:出于测试目的,您只需在聊天中输入 "betreten"(德语为 "logged in")和 "verlassen"("logged out in German"),无需登录有多个帐户:)
你需要使用return
来得到一个值。使用函数名只是创建一个新的局部变量。我已经重命名了 var 以使其更清晰。
function countverlassen(){
var temp = document.body.innerText;
// the g in the regular expression says to search the whole string
// rather than just find the first occurrence
var verlassenCount = (temp.match(/verlassen/g) || []).length +1;
console.log(verlassenCount);
return verlassenCount;
}
使用countverlassen()
调用函数并获取值。存储值而不是每次都调用函数。
function countbetreten() {
var temp = document.body.innerText;
// the g in the regular expression says to search the whole string
// rather than just find the first occurrence
var betretenCounter = (temp.match(/betreten/g) || []).length;
var verlassenCounter = countverlassen();
console.log(betretenCounter);
if (betretenCounter >= 2 && betretenCounter != verlassenCounter) {
$('.alleine').hide();
} else if (verlassenCounter >= 2 && betretenCounter == verlassenCounter) {
$('.alleine').show();
}
}
我正在处理 PHP-聊天。 当用户登录时,他会自动发送一条消息 "logged in" 显示给所有人,当他注销时,他会自动发送 "logged out" 显示给所有人(当然除了他)。 当所有用户注销时,所有消息都会自动删除。
我现在正在开发一个功能,可以告诉您聊天室中是否只有您一个人。 我想使用 JavaScript 来解决这个问题。我现在使用的脚本统计"logged in"和"logged out"这个词在聊天记录中出现的频率(是的,不是最终的解决方案,但绝对足够我使用)
代码如下:
function countverlassen(){
var temp = document.body.innerText;
// the g in the regular expression says to search the whole string
// rather than just find the first occurrence
var countverlassen = (temp.match(/verlassen/g) || []).length +1;
console.log(countverlassen);
}
function countbetreten(){
var temp = document.body.innerText;
// the g in the regular expression says to search the whole string
// rather than just find the first occurrence
var countbetreten = (temp.match(/betreten/g) || []).length;
console.log(countbetreten);
if (countbetreten >= 2 && countbetreten != countverlassen){
$('.alleine').hide();
}
else if (countverlassen >= 2 && countbetreten == countverlassen) {
$('.alleine').show();
}
}
class "alleine" 仅包含文本 "You are alone in here right now"。 当另一个用户登录时,这应该被隐藏,当除您之外的所有其他用户注销时,它应该再次显示。 隐藏 class 效果很好,但当其他人都注销时它不会再次出现。
您可以在此处查看实际效果:http://team3.digital-cultures.net/index.php# 只需选择一个名称并从下拉列表中选择一个起点/目的地。
我做错了什么? 谢谢!
编辑:出于测试目的,您只需在聊天中输入 "betreten"(德语为 "logged in")和 "verlassen"("logged out in German"),无需登录有多个帐户:)
你需要使用return
来得到一个值。使用函数名只是创建一个新的局部变量。我已经重命名了 var 以使其更清晰。
function countverlassen(){
var temp = document.body.innerText;
// the g in the regular expression says to search the whole string
// rather than just find the first occurrence
var verlassenCount = (temp.match(/verlassen/g) || []).length +1;
console.log(verlassenCount);
return verlassenCount;
}
使用countverlassen()
调用函数并获取值。存储值而不是每次都调用函数。
function countbetreten() {
var temp = document.body.innerText;
// the g in the regular expression says to search the whole string
// rather than just find the first occurrence
var betretenCounter = (temp.match(/betreten/g) || []).length;
var verlassenCounter = countverlassen();
console.log(betretenCounter);
if (betretenCounter >= 2 && betretenCounter != verlassenCounter) {
$('.alleine').hide();
} else if (verlassenCounter >= 2 && betretenCounter == verlassenCounter) {
$('.alleine').show();
}
}