所以这是一个奇怪的问题,因为我在这个问题上找到的每个主题都与我的问题完全相反。
我在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);
}
}
答案 0 :(得分:0)
您可以使用clear和append,而不是使用.html(),以确保您的容器为空,例如:
getView()
答案 1 :(得分:0)
发现问题 - 还有另一个函数因为循环它在重新处理时保留了前一组返回的HTML。 jquery.empty()函数放在正确的位置,同时再次声明字符串null,现在修复。