在我问我的问题之前,我想让每个人都知道我很欣赏这样一个事实:总有一个人愿意提供帮助,而在我结束时,我会尽可能多地回馈社区.谢谢
现在,我想得到一些关于如何正确利用JavaScript中的"for ... in"循环的指示,我已经做了一些研究并尝试了一些事情,但我仍然不清楚如何正确用它.
假设我在HTML表单中有一个随机数量的"select"标签,我不要求用户为所有这些标签选择一个选项,如果需要,可以保留一些不变的选项.但是,我需要知道他们是否选择了一个或至少一个.
我试图找出用户是否选择了其中任何一个的方法是使用"for ... in"循环.例如:
var allSelected = $("select option:selected");
var totalSelected = $("select option:selected").length;
Run Code Online (Sandbox Code Playgroud)
第一个变量生成所有选定选项的数组.第二个变量告诉我在表单中有多少选定的选项(选择标签可以多于一个,每次都会更改).现在,为了查看是否已选择任何内容,我遍历每个元素(选择的选项),并检索"value"属性.默认的"option"标签有一个值="0",所以如果任何选中的选项返回一个大于0的值,我知道至少选择了一个选项,但它不必按顺序排列,这是我的循环至今:
for(var i = 0; i < totalSelected; i++){
var eachOption = $(allSelected[i]).val();
var defaultValue = 0;
if(eachOption == defaultValue){
...redirect to another page
}else if(eachOption > defaultValue){
... I display an alert
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,只要"if"匹配0值,它就会将用户发送到下一页而不测试数组中的其余元素,用户可以选择第二个或第三个选项.
我真正想做的是检查数组中的所有元素,然后采取下一步行动,在我看来这是我能做到的,但我没有做对:
var randomValue = 25;
for(randomValue in allSelected){
var found = true;
var notFound = false
if(found){
display an alert
}else{
redirect to next page
} …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用css伪类和伪元素,我发现了一些我无法解决的问题.
考虑以下html输入字段:
<input type="number" value="1" min="1" max="1000" step="1" pattern="\d" /><span></span>
Run Code Online (Sandbox Code Playgroud)
为了达到3种状态:空,有效和无效.我正在使用:: after伪元素(应用于与输入相邻的跨度)以在字段的值有效时添加复选标记,并在值无效时添加X.
我正在使用伪类:valid和:invalid,似乎当输入字段为空(value ="")时,其状态也是有效的.
有问题的CSS如下:
.v3_forms input[value=""] + span::after {
content: "";
}
.v3_forms input:valid + span::after {
content: "\2713";
color: limegreen;
}
.v3_forms input:invalid + span::after {
content: "X";
color: #ce0000;
}
Run Code Online (Sandbox Code Playgroud)
对于我能够告诉的,在清除浏览器中的值之后,第二个css规则优先,即使特异性相同.
我在这里测试了选择器:特异性计算器,似乎属性和伪类具有相同的权重.
这是我与同一问题有关的第二个问题,所以我为此道歉.
我能够组合一个功能来"淡出"一个元素,它工作正常,我的问题是,当我试图反转它,所以元素"淡入"它不起作用.我试图改变明显的,但我无法理解我做错了什么.
我的代码到目前为止如下:
鉴于我有一个像这样的"div":
<div id="test" style="width:200px; height:200px; display:block; opacity:1; background-color:red;"></div>
Run Code Online (Sandbox Code Playgroud)
我用来淡出它的JavaScript函数是:
var getElement = document.getElementById('test');
function fadeOut(elem, speed){
if(!elem.style.opacity){
elem.style.opacity = 1;
}
var desvanecer = setInterval(function(){
elem.style.opacity -= .02;
if(elem.style.opacity < 0){
clearInterval(desvanecer);
}
}, speed / 50);
}
fadeOut(getElement, 500);
Run Code Online (Sandbox Code Playgroud)
有人可以看看这个,让我知道我做错了什么,我想做的就是"FADE IN"一个不透明度等于"1"的元素.
顺便说一句,我不能使用jQuery,但我渴望以这种方式学习.
谢谢
我试图扭转这个功能如下:
var getElement = document.getElementById('test');
function fadeIn(elem, speed){
if(elem.style.opacity){
elem.style.opacity = 0;
}
var desvanecer = setInterval(function(){
elem.style.opacity += .02;
if(elem.style.opacity > 1){
clearInterval(desvanecer);
}
}, speed / 50);
}
fadeIn(getElement, …Run Code Online (Sandbox Code Playgroud) 我想找到一种更好的方法来实现此功能。
我正在尝试向 body 标签添加一个 Even 。我正在使用 Angular 4。由于 body 标记(在 index.html 中)不是通过组件处理的,因此我无法使用 Angular 方式来完成此操作。
我通常会为 xyz.component.html 做这样的事情:
(click)="myMethod()"
Run Code Online (Sandbox Code Playgroud)
xyz.component.ts 中类似这样的东西
public myMethod(): void {
// do something here
}
Run Code Online (Sandbox Code Playgroud)
由于我对 Angular 的了解有限,除了将事件直接添加到 body 标记之外,我想不出更好的方法来做到这一点,如下所示:
<body onscroll="myMethod()">
Run Code Online (Sandbox Code Playgroud)
并将实际函数放置在 index.html 文件本身头部的脚本标记之间,如下所示:
<head>
<script>
function myMethod(){
// do something here
}
</script>
</head>
Run Code Online (Sandbox Code Playgroud)
我尝试将事件侦听器添加到 app.component.ts 类内的主体(窗口/文档),如下所示:
export class AppComponent implements OnInit{
public myMethod(): void{
window.addEventListener('myEvent', this.myEventHandler, false);
}
}
Run Code Online (Sandbox Code Playgroud)
这对我不起作用。检查该元素后,我可以看到该事件未附加。
我只是有一个关于如何为HTML元素即时生成id的快速问题.到目前为止,我已经尝试了一些东西,我开始使用"for"循环,我已经知道有多少元素我必须生成Id,在这种情况下,我有一个"ul"与6"li".我的"for"循环如下:
var items = $("ul li").length;
for(var i = 0; i <= items; i++){
$("ul li").attr("id", "number" + i);
}
Run Code Online (Sandbox Code Playgroud)
"number"将是与"i"连接的新id,因此我为每个"li"获得不同的Id.你可能会说,这不起作用,因为我最终为每个"li"使用相同的Id:
在这种情况下,我得到<li id="number6">... </li>"ul"中的所有"li"元素.我尝试了一个"while"循环和".each()"与jQuery,但我得到完全相同的东西.
任何帮助,将不胜感激.
有没有人在互联网和网络发展的历史中,能够摆脱codeIgniter中的mod_rewrite的"index.php".
我已经尝试了几天,似乎没有任何工作.
javascript ×4
angular ×1
codeigniter ×1
css ×1
dom-events ×1
fade ×1
html5 ×1
setinterval ×1
typescript ×1