javascript - for循环不执行js中的所有循环
问题描述
我有这个代码,
var v = 'asdasdadsa<img src="ttttttt">asdasdadsa';
var x = $('<div></div>').append(v);
var t = $('<div></div>').get(0);
var z = x.get(0).childNodes;
var max = 20;
var length = 0;
for(i=0;i<z.length;i++){
console.log(z[i].nodeType);
// if(z[i].nodeType == 3){
// var prev_length = length;
// length += z[i].length;
// if(length > max){
// var val = z[i].nodeValue;
// t.appendChild(document.createTextNode(val.substring(0,max-prev_length)));
// break;
// }else{
// t.appendChild(z[i]);
// }
// }
if(z[i].nodeType == 1){
if(length > max){
// break;
}else{
t.appendChild(z[i]);
}
}
}
console.log(t);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
上面的 for 循环没有执行所有三个循环,在执行第二个 if 条件时中断。
如果您注释第二个 if 条件,它将执行所有三个循环。
所以问题必须在第二个if条件下。
解决方案
将元素附加到t
from的行为z
是改变 的长度z
。这可以用一些console.log
. z
您可以通过缓存循环之前的长度来解决此问题(尽管可能会破坏其他内容) 。
var v = 'asdasdadsa<img src="ttttttt">asdasdadsa';
var x = $('<div></div>').append(v);
var t = $('<div></div>').get(0);
var z = x.get(0).childNodes;
var max = 20;
var length = 0;
console.log("len before",z.length);
for(i=0;i<z.length;i++){
//console.log(i,z[i].nodeType);
// if(z[i].nodeType == 3){
// var prev_length = length;
// length += z[i].length;
// if(length > max){
// var val = z[i].nodeValue;
// t.appendChild(document.createTextNode(val.substring(0,max-prev_length)));
// break;
// }else{
// t.appendChild(z[i]);
// }
// }
if(z[i].nodeType == 1){
if(length > max){
// break;
}else{
t.appendChild(z[i]);
}
}
console.log("len after",z.length);
}
console.log(t);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
推荐阅读
- postgresql - 在suse linux中安装rpm后无法启动pgagent
- kubernetes - 在私有 Kubernetes 集群上设置 Spinnaker
- android - 如何在片段 b 上关闭片段 a?
- c# - 是否可以通过编程方式获取任何文件(汇编和非汇编)的文件版本?
- java - flink 是否可以均匀地使用固定数字 key to keyBy 一个数据流来避免数据倾斜?
- rust - 没有为实现“Future”的类型找到名为“poll”的方法
- spring-boot - Spring Boot 应用程序中的存储库无法识别 @Autowired 注释
- flutter - Flutter:Http post请求错误无效的媒体类型:预期
- reactjs - 在 React 中将状态从子级传递给父级;孩子有单独的状态
- node.js - 带有pdf-image麻烦的Nodejs PDF to Image