循环相关问题的javascript
我尝试使用for循环作为list all的子项循环相关问题的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
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) {}
}
}