简化setInterval

时间:2016-02-11 20:23:02

标签: javascript jquery

为了让我的代码更具可读性和更简单,我对这段代码感到不满:

#include "stdheader.h"
#include "Atom.h"
Atom **atominfo(FILE *fp1,size_t nbytes,char *my_string,Ljcoeff *lj, int natoms) {

                                int i;
                            Atom **atom=(Atom **) malloc(sizeof(Atom *)*natoms);
                           //    printf("%d\n",natoms);
                            for (i = 0; i < natoms; i++) {
                                        atom[i]=(Atom *) malloc(sizeof(Atom));
                                        atom[i]->natoms=natoms;
                                        atom[i]->eps=lj->eps[i];
                                        atom[i]->sigma=lj->sigma[i];      
                    getline(&my_string, &nbytes, fp1);
                    sscanf(my_string, "%d %*d %lf %lf %lf %lf\n",  &atom[i]->id, &atom[i]->x,
                            &atom[i]->y, &atom[i]->z, &atom[i]->q);
//                                      printf("%d %d %lf %lf %lf %lf\n",i+1,atom[i]->id,atom[i]->x,atom[i]->y,atom[i]->z,atom[i]->q);
                }                              
                return atom;


}





void free_atom(Atom **atom)
{
int i;
for(i=0;i< atom[i]->natoms;i++){
//printf("%d\n",atom[i]->natoms-1);
free(atom[i]);
}
free(atom);
}

虽然这确实有效,但我觉得有一个函数太多,即var refresh = setInterval(datumTijd, 1000); function datumTijd() { document.getElementById("tijd1").innerHTML = tijd(); document.getElementById("tijd2").innerHTML = tijd(); } function tijd(){ var d1 = new Date(), minutes = d1.getMinutes().toString().length == 1 ? '0'+d1.getMinutes() : d1.getMinutes(), hours = d1.getHours().toString().length == 1 ? '0'+d1.getHours() : d1.getHours(); return hours+ ':' +minutes; } - 位,我更新了两个不同的document.getElementById。我因为<div>代码而陷入困境,我无法找到摆脱这一部分的方法。

我的尝试:

return

但没有回来:(

1 个答案:

答案 0 :(得分:2)

在将任何内容放入innerHTML之前,您已从该功能返回。而且你也在innerHTML中添加了错误的内容。

function tijd(){
  var d1 = new Date(),
      minutes = d1.getMinutes().toString().length == 1 ? '0'+d1.getMinutes() : d1.getMinutes(),
      hours = d1.getHours().toString().length == 1 ? '0'+d1.getHours() : d1.getHours(),
      time = hours+ ':' +minutes;
  document.getElementById("tijd1").innerHTML = time;
  document.getElementById("tijd2").innerHTML = time;
}

我没有真正看到将创建时间字符串的函数与将其放在innerHTML中的函数分开的问题,就像在原始代码中一样。你可能有其他地方需要花时间,所以值得将它分成自己的功能。我对原始代码进行的唯一更改是使用变量而不是两次调用函数:

function datumTijd() {
  var time = tijd();
  document.getElementById("tijd1").innerHTML = time;
  document.getElementById("tijd2").innerHTML = time;
}

您还有使用jQuery标记的问题,因此您可以使用以下内容简化分配:

function datumTijd() {
    $("#tijd1, #tijd2").text(tijd());
}