JavaScript使用InnerHTML属性追加而不是覆盖

时间:2017-07-26 09:48:43

标签: javascript jquery html frontend sharepoint-online

所以这是一个奇怪的问题,因为我在这个问题上找到的每个主题都与我的问题完全相反。

我在SharePoint Online中使用一些JavaScript来替换某些元素的innerHTML,但每当函数运行时,它都会附加内容而不是覆盖它。

我已经尝试过JS方法,首先将innerHTML设置为其他内容,然后设置为值(没有运气),并将其移动到jQuery调用以设置它。在这两种情况下它都做同样的事情。在Edge和Chrome上都观察到相同的问题。

代码如下 - 任何想法? (没有包括整个脚本,只是特定的功能,因为它是一个非常大的脚本,其他位正在按预期工作)。

function getThisCompany() {
  thisCompanyEnum = thisCompany.getEnumerator();
  while (thisCompanyEnum.moveNext()) {
      var currentCompany = thisCompanyEnum.get_current();
      var thisCompanyId = currentCompany.get_item('ID');
      var thisCompanyName = currentCompany.get_item('companyName');
      var thisCompanyPhone = currentCompany.get_item('companyPhone');
      var thisCompanyUrl = currentCompany.get_item('companyUrl');
      var thisCompanyLogo = currentCompany.get_item('companyLogo');

      // Check for a null value - if it is null console throws an error and stops the script, so load a default logo
      if (thisCompanyLogo == null) {
        thisCompanyLogo = "https://consiliumuk.sharepoint.com/POC/minicrm/CRM%20Images/nologo.png";
      }
      else {
        thisCompanyLogo = thisCompanyLogo.get_url();
      }

      var thisCompanyAddress = currentCompany.get_item('companyAddress');
      var thisCompanyMarkupBlock = "<table><tr><td colspan=2><b>";
      thisCompanyMarkupBlock += thisCompanyName;
      thisCompanyMarkupBlock += "</b></td></tr><tr><td colspan=1 valign=top><img height=100 width=100 src='";
      thisCompanyMarkupBlock += thisCompanyLogo;
      thisCompanyMarkupBlock += "' /></td><td colspan=1 valign=top>";
      thisCompanyMarkupBlock += thisCompanyAddress;
      thisCompanyMarkupBlock += "<p /><i>";
      thisCompanyMarkupBlock += thisCompanyPhone;
      thisCompanyMarkupBlock += "</i><br /><a href=";
      thisCompanyMarkupBlock += thisCompanyUrl;
      thisCompanyMarkupBlock += ">Visit company website</a></td></tr></table><p /><input id='loadExtended' type='button' value='Load' onClick='loadExtendedDetails(";
      thisCompanyMarkupBlock += thisCompanyId;
      thisCompanyMarkupBlock += ");' />";
      alert(thisCompanyMarkupBlock);

      //document.getElementById('detailsSpace').innerHTML = "Loading...";
      //document.getElementById('detailsSpace').innerHTML = thisCompanyMarkupBlock;
      jQuery("#detailsSpace").html(thisCompanyMarkupBlock);
    }   
  }

2 个答案:

答案 0 :(得分:0)

您可以使用clear和append,而不是使用.html(),以确保您的容器为空,例如:

getView()

答案 1 :(得分:0)

发现问题 - 还有另一个函数因为循环它在重新处理时保留了前一组返回的HTML。 jquery.empty()函数放在正确的位置,同时再次声明字符串null,现在修复。