Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环相关问题的javascript_Javascript_Loops_Javascript Events - Fatal编程技术网

循环相关问题的javascript

循环相关问题的javascript,javascript,loops,javascript-events,Javascript,Loops,Javascript Events,我尝试使用for循环作为list all的子项 function init(){ new dEdit($('editBox')); new dEdit($('editBox2')); new dEdit($('editBox3')); } 转发 function init(){ for(var i = 0; i < 1000; i++){ new dEdit($('edit

我尝试使用for循环作为list all的子项

function init(){
    new dEdit($('editBox'));
    new dEdit($('editBox2'));
    new dEdit($('editBox3'));
   }
转发

function init(){
           for(var i = 0; i < 1000; i++){
                                new dEdit($('editBox'+i));
           }

}  
但这似乎对我不起作用。如何纠正

谢谢

下面是没有for循环的完整工作代码

<?xml version="1.0" encoding="ISO-8859-1"?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title> New Document </title>
  <meta name="title" content="" />
  <meta name="author" content="0xs.cn" />
  <meta name="subject" content="" />
  <meta name="language" content="zh-cn" />
  <meta name="keywords" content="" />
  <style type="text/css" >
   /* default css rule */
   body { font: 12px "Verdana"; }
  </style>
  <script type="text/javascript" >
   // shortcut
   function $(s){
    return typeof s == 'object'?s:document.getElementById(s);
   }
   var dEdit = function(el){
    var me = this;
    this.save = function (txt){
     el.innerHTML = txt;
    };

    this.edit = function (e){
     var e = e || event;
     var target = e.target || e.srcElement;
     if(target.tagName.toLowerCase() == 'input'){
      return;
     }
     var ipt = document.createElement('input');
     ipt.value = target.innerHTML;
     ipt.onkeydown = function(){
      if((arguments[0]||event).keyCode==13){
       me.save(this.value);
      }
     };
     ipt.onblur = function(){
      me.save(this.value);
     };
     target.innerHTML = '';
     target.appendChild(ipt);
     ipt.focus();
    };

    el.onclick = this.edit;
   }; 
   function init(){
    new dEdit($('editBox'));
    new dEdit($('editBox2'));
    new dEdit($('editBox3'));
   }
   window.onload = init;
  </script>
 </head>

  <body>
   <span id="editBox">This is sample text.</span> <br/><br/>
   <span id="editBox2">This is sample text 222.</span> <br/><br/>
   <span id="editBox3">This is sample text 333.</span>
  </body>

 </html>

将span标记上的id更改为editBox0、editBox1和editBox2。另外,您在20-30分钟前发布了这个完全相同的问题,当时也有人给了您正确的答案。

您需要为ID选择器添加前缀。将代码更改为:

function init(){
           for(var i = 0; i < 1000; i++){
                                new dEdit($('#editBox'+i));
           }

}

在其他问题中,比如当你调用dEdit时会发生什么。。。在空jQuery对象上

您需要前缀来选择ID:


$'editBox2'

循环从0到1000,editBoxN不是有效的ID选择器,因此以

new dEdit($('editBox0'));
new dEdit($('editBox1'));
new dEdit($('editBox2'));
...
更改first editBox ID,即循环变量,并向jquery选择器添加一个哈希以匹配ID

function init(){
       for(var i = 1; i < 1000; i++){
           new dEdit($('#editBox'+i));
       }
 }  

问题是init在第一个值上抛出一个期望值,因为“editBox0”不存在。要解决这个问题,您可以将每个循环迭代封装在try/catch中

e、 g

这样,如果id未定义,脚本仍将运行。此外,如果要在循环中指定它,则应更改

function init(){
    for(var i = 0; i < 1000; i++){
        try {
            new dEdit($('editBox'+i));
        } catch (e) {}
    }
}