无法在动态创建的输入ID上获取getDocumentById

时间:2019-05-14 20:30:16

标签: javascript

我有以下html

<table>
    <tr ng-repeat="refNumber in Dc.Data">
        <td>
            {{refNumber.label}}: &nbsp;
        </td>
        <td ng-if="refNumber.isFlowerRequired && refNumber.value != null">
            <input type="text" id="{{refNumber.refId}}" ng-value="refNumber.value != null ? refNumber.value : ''" />
        </td>
        <td ng-if="refNumber.isFlowerRequired && refNumber.value == null">
            <input type="text" id="{{refNumber.refId}}" />
        </td>
    </tr>
</table>

refNumber.refId是一个GUID(fd74cea6-ebe4-4085-b221-70c41624bc1b )。

我通过以下方式设置代码

for (var i = 0; i < Dc.Data.filter(val => val.isRequired).length; i++) {
    var refNumText = document.getElementById("'"+ Dc.Data[i].refId + "'").value;
    console.log(refNumText);
}

我遇到了TypeError: Cannot read property 'value' of null

在线搜索提供了一些提示,但没有任何帮助我解决此问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

调用document.getElementById()时,不应在refId周围添加引号。 UID中没有引号。

您正在将Dc.Data过滤为仅设置了isRequired的元素。但是,您只是使用它来获取迭代次数,实际上并没有处理那些相同的元素。您应该遍历过滤后的数组。

Dc.Data.filter(val => val.isRequired).forEach(d => {
    var refNumText = document.getElementById(d.refId).value;
    console.log(refNumText);
});