小编jnk*_*ois的帖子

在javascript中正确使用"for ... in"循环?

在我问我的问题之前,我想让每个人都知道我很欣赏这样一个事实:总有一个人愿意提供帮助,而在我结束时,我会尽可能多地回馈社区.谢谢

现在,我想得到一些关于如何正确利用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)

javascript

11
推荐指数
3
解决办法
2810
查看次数

空输入时输入字段是否有效?

我一直在尝试使用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规则优先,即使特异性相同.
我在这里测试了选择器:特异性计算器,似乎属性和伪类具有相同的权重.

css html5

6
推荐指数
1
解决办法
1289
查看次数

使用原始javascript淡化HTML元素

这是我与同一问题有关的第二个问题,所以我为此道歉.

我能够组合一个功能来"淡出"一个元素,它工作正常,我的问题是,当我试图反转它,所以元素"淡入"它不起作用.我试图改变明显的,但我无法理解我做错了什么.

我的代码到目前为止如下:

鉴于我有一个像这样的"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)

javascript fade setinterval

4
推荐指数
1
解决办法
3734
查看次数

如何在 Angular 中向 body 标签添加事件?

我想找到一种更好的方法来实现此功能。

我正在尝试向 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)

这对我不起作用。检查该元素后,我可以看到该事件未附加。

javascript dom-events typescript angular2-template angular

3
推荐指数
1
解决办法
3706
查看次数

使用javascript将Id动态分配给DOM元素

我只是有一个关于如何为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,但我得到完全相同的东西.

任何帮助,将不胜感激.

javascript

1
推荐指数
1
解决办法
4888
查看次数

modIrewrite用于codeIgniter

有没有人在互联网和网络发展的历史中,能够摆脱codeIgniter中的mod_rewrite的"index.php".

我已经尝试了几天,似乎没有任何工作.

codeigniter

0
推荐指数
1
解决办法
8931
查看次数