我正在尝试运行一个脚本,如果[i]存在(意味着有[i]的值,任何值)或者如果[i]没有值则运行其他部分,我希望部分运行,谁能让我高兴?
我说的是for循环,比如
for(var i=0;i<data.length;i++){
if(var i == doesnt exist){
code1 runs
}
else{
code2 runs
}
继承人html中的代码
<script>
function funfacts(o){
var facts = document.getElementById('funfacts');
var data = o.query.results.a;
for(var i=0;i<data.length;i++){
var out = document.createElement('a');
facts.appendChild(out);
out.href = data[i].href;
out.innerHTML = data[i].alt;
out.appendChild(document.createElement('br'));
}
}
</script>
答案 0 :(得分:1)
for(var i=0;i<data.length;i++){
if(data[i]){
code1 runs
} else {
code2 runs
}
}
这假设您正在迭代数组,并且该数组中的一些对象是null
。否则,此循环将永远不会超过最后一个数组索引,因此除非您在数组中实际拥有null
,否则无需保护它。
请注意,这也会在零上失败,因为在javascript中零被视为false。如果这是您的问题,可以将其与null
if (data[i] !== null) {
在循环外部,您可以通过以下方式检查数组是否在索引处具有值:
if (typeof(data[i]) === 'undefined') {
这将查看该索引是否有值,可以是false,zero,null或其他任何内容,此测试将通过。
但同样,在该循环中,它保证在数组范围内。
答案 1 :(得分:1)
您的代码:
for(var i=0;i<data.length;i++){
if(var i == doesnt exist){
code1 runs // this will never be executed
}
else{
code2 runs
}
} // I don't see this brace in your code, so I assume it's here
相当于:
for(var i=0;i<data.length;i++){
code2 runs
}
也许你的意思是:
if(data.length == 0) {
code2 runs
}
else {
for(var i=0;i<data.length;i++){
code 1 runs
}
}
答案 2 :(得分:0)
答案 3 :(得分:0)
如果你之前刚创建了一行,我怎能不存在?
您可以通过以下方式检查循环中是否设置为未定义:
for(var i=0;i<data.length;i++){
if(i){
//code1 runs
}
else{
//code2 runs
}
}