首页 > 解决方案 > Javascript & Sharepoint:用变量值填充表

问题描述

我在我们的共享点网站上有各种列表。一个列表被命名为“LD”。我正在尝试创建一个简单的表来计算记录并汇总此列表中的成本。但是,我正在使用脚本在最底部使用变量值(Icount、SumPrices)填充表格。我哪里错了?我可以分别获取值(即:252 和 352,000 美元),如脚本顶部所示(只是一个文本)。我似乎无法将这些值放在我的表中。第 2 列和第 3 列为空白

<p id="SumPrices">352662</p>
<p id="Icount">252</p>

 <table border="10" cellspacing="10" cellpadding="2"> 
  <tbody>
  <tr>
     <th scope="col"> Fiscal </th>
     <th scope="col"> Courses </th>
     <th scope="col"> Cost </th>
     <th scope="col"> Comment </th>
  </tr>
  <tr>
     <td> 2019-20 </td> 
     <td id="Icount"></td>
     <td id="SumPrices"></td>
     <td> Something </td> 
  </tr> 
</tbody>
</table>... 
<script>


<script type="text/javascript">
var listName = 'LD';
var xhr = new XMLHttpRequest();
xhr.open('GET', _spPageContextInfo.webAbsoluteUrl + 
    '/_api/web/lists/GetByTitle(\'' + listName + '\')/items? 
    $select=Cost&$top=1000');
xhr.setRequestHeader('Accept', 'application/json; odata=verbose');
xhr.onload = function(){
    if (xhr.status === 200) {
        var results = JSON.parse(xhr.responseText);
        results = results.d.results;

        var sum = 0;
        for (var i = 0; i < results.length; i++){
            sum += results[i].Cost;
        }

        document.getElementById('SumPrices').innerText = sum;
    document.getElementById('Icount').innerText = i;
                }
    else {
        alert('Request failed.  Returned status of ' + xhr.status);
    }
};
xhr.send();
</script>

标签: javascriptsharepoint

解决方案


您的代码不起作用的原因是脚本在表格插入页面之前执行,因此无法找到要更新的单元格。

您需要将脚本移动到表格之后(或将表格移动到脚本之前),或者使用函数等待页面完成加载。后者有几种方法,其中一些在这个流行的问题中进行了描述。

编辑:如果您想了解更多关于在哪里放置 JavaScript 代码的信息,我建议您阅读这个问题和接受的答案,因为它用非常简单的术语解释了所有内容,并提供了多种解决方案。


推荐阅读