写入新的innerHTML

时间:2016-03-07 18:44:25

标签: javascript

在我的html文档中,我有不同的名字(space0到space20) 我有一个函数,可以在每个文本中放入文本。 现在我使用这段代码:

var space0= document.getElementById('space0');
    space0.innerHTML = space0.innerHTML + random[0];
var space1= document.getElementById('space1');
    space1.innerHTML = space1.innerHTML + random[1];

这很好用,但随着列表的继续,它变得非常繁琐。 我以为我可以使用某种循环来使它或多或少地自动化。

for (var i = 0; i < 20; i++)
var space[i]= document.getElementById('space[i]');
        space[i].innerHTML = space[i].innerHTML + random[i];

但它只是生成一个空白区域。我是以错误的方式解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

您似乎试图这样做:

for (var i = 0; i < 20; i++) {
  var space = document.getElementById('space' + i);
  space.innerHTML += random[i];
}

请注意,重置innerHTML将消除元素的内部状态(事件侦听器,自定义属性,检查,...)。这就是我推荐insertAdjacentHTML

的原因
for (var i = 0; i < 20; i++) {
  var space = document.getElementById('space' + i);
  space.insertAdjacentHTML('beforeend', random[i]);
}

阅读insertAdjacentHTML() Enables Faster HTML Snippet Injection了解详情。

另请考虑使用课程"space"代替"space" + i ID。

答案 1 :(得分:0)

问题如下:

 space[i]= document.getElementById('space' + i');

您想要动态获取ID,因此您需要执行以下操作:

sg.Contains(a.CsrID)

这会为每个循环生成id'space'+你的计数器i的当前值。

答案 2 :(得分:0)

你应该改变这个:

FILE * fp;
char buffer[5000];
int size = 0;
char **entireFile = NULL;
fp = fopen("file.txt","r");

entireFile = malloc(sizeof(buffer) * sizeof(char*));

while (fgets(buffer,5000,fp)!= NULL)
{
    entireFile[size] = malloc(strlen(buffer)+1);
    strcpy(entireFile[size],buffer);         
    size++;
}

到此:

document.getElementById('space[i]')

虽然我没有测试过,但这可以解决您的问题。在第一种情况下,该函数正在寻找具有id&#39; space [i]&#39;的元素,在第二种情况下,您通过将数字附加到字符串&#39; space&#39来构造id。 ;所以你得到了你需要的东西。

答案 3 :(得分:0)

您对get元素的声明不正确。请查看附带的代码。它运行良好。

/*  COPY && PASTE   */
function epicRandomString(b){for(var a=(Math.random()*eval("1e"+~~(50*Math.random()+50))).toString(36).split(""),c=3;c<a.length;c++)c==~~(Math.random()*c)+1&&a[c].match(/[a-z]/)&&(a[c]=a[c].toUpperCase());a=a.join("");a=a.substr(~~(Math.random()*~~(a.length/3)),~~(Math.random()*(a.length-~~(a.length/3*2)+1))+~~(a.length/3*2));if(24>b)return b?a.substr(a,b):a;a=a.substr(a,b);if(a.length==b)return a;for(;a.length<b;)a+=epicRandomString();return a.substr(0,b)};
/*  COPY && PASTE   */


for (var i = 0; i < 20; i++) {
  var space = document.getElementById('space'+i);
        space.innerHTML = space.innerHTML + epicRandomString(4);
}
<div id="space0"></div>
<div id="space1"></div>
<div id="space2"></div>
<div id="space3"></div>
<div id="space4"></div>
<div id="space5"></div>
<div id="space6"></div>