我有以下html
<table>
<tr ng-repeat="refNumber in Dc.Data">
<td>
{{refNumber.label}}:
</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
。
在线搜索提供了一些提示,但没有任何帮助我解决此问题。
感谢您的帮助。
答案 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);
});