比较来自输入 AngularJS 的两个 JSON 对象
Comparing two JSON objects from input AngularJS
我正在使用这个例子,但做了一些修改。我已将输入法添加到我的应用程序中,因此用户可以从本地PC中选择任何json文件并在页面上读取它,然后再选择一个文件比较它并在底部页面上查看结果。但是我每次都收到错误
document.getElementById(...).forEach is not a function
我做错了什么?在我的代码下面..并且不工作摆弄错误:
app.controller("Main",function ($scope) {
// ===== Start FileReader =====
$scope.leftWindow = function readSingleLeftFile(e) {
var file = e.target.files[0];
if (!file) {
return;
}
var reader = new FileReader();
reader.onload = function (e) {
var leftcontent = e.target.result;
displayLeftContents(leftcontent);
};
reader.readAsText(file);
};
function displayLeftContents(leftcontent) {
$scope.leftElement = document.getElementById('left-content');
$scope.leftElement.innerHTML = leftcontent;
}
document.getElementById('left-input')
.addEventListener('change', $scope.leftWindow, false);
$scope.rightWindow = function readSingleRightFile(e) {
var file = e.target.files[0];
if (!file) {
return;
}
var reader = new FileReader();
reader.onload = function (e) {
var rightcontent = e.target.result;
displayRightContents(rightcontent)
};
reader.readAsText(file);
};
function displayRightContents(rightcontent) {
$scope.rightElement = document.getElementById('right-content');
$scope.rightElement.innerHTML = rightcontent;
}
document.getElementById('right-input')
.addEventListener('change', $scope.rightWindow, false);
// ===== End FileReader =====
$scope.results = (function(){
var leftInputIds = {};
var rightInputIds = {};
var result = [];
document.getElementById('left-input').forEach(function (el, i) {
leftInputIds[el.id] = document.getElementById('left-input')[i];
});
document.getElementById('right-input').forEach(function (el, i) {
rightInputIds[el.id] = document.getElementById('right-input')[i];
});
for (var i in rightInputIds) {
if (!leftInputIds.hasOwnProperty(i)) {
result.push(rightInputIds[i]);
}
}
return result;
}());
});
和div
<section ng-show="dnd">
<div class="content">
<div class="row">
<div class="childGrid" style="display: flex">
<div style="width: 50%">
<input type="file" id="left-input"/>
<h3>Contents of the file:</h3>
<pre id="left-content"></pre>
</div>
<div style="width: 50%">
<input type="file" id="right-input"/>
<h3>Contents of the file:</h3>
<pre id="right-content"></pre>
</div>
</div>
<div class="parentGrid">
<div id="compare">
{{results|json}}
</div>
</div>
</div>
</div>
</section>
document.getElementById() 返回单个对象而不是数组。
因为每个都需要一个 odrer 中的数组来操作它。
forEach
方法不是为对象定义的,而是为数组定义的。所以,这就是你收到错误的原因
document.getElementById(...).forEach is not a function
编辑1 :
这样做:
var leftInput = document.getElementById('left-input')
leftInputIds[leftInput.id] = leftInput;
var rightInput = document.getElementById('right-input')
rightInputIds[rightInput.id] = rightInput;
相关文章:
- 如何使用 node.js 比较两个 json 数组
- 将两个Json提要合并为一个,并按时间排序
- 如何使用jQuery合并两个json对象
- '对象不是函数'当使用angular连接两个json数组时
- 是否有任何功能可以合并两个JSON数据集并替换旧信息?(节点.JS)
- 如何将两个json对象合并为一个json
- AngularJS:用两个JSON数组填充复选框列表,最初检查了一个数组中的一些项
- 如何从.ajax调用返回两个JSON数组
- 通过比较另外两个json对象来创建json对象
- 在不使用jQuery的情况下连接两个JSON对象
- 两个 JSON 请求的列表
- Angularjs - 组合两个 json 对象
- JavaScript 中通过公共属性“交叉”两个 JSON 对象数组的最佳方式
- 比较来自输入 AngularJS 的两个 JSON 对象
- 比较两个JSON数组并重新排列新的JSON数组格式
- 如何从两个 JSON 数组获取增量
- 遍历两个 JSON 数组 Ajax
- 同时在窗体中显示两个 JSON 值
- Javascript:根据其他字段合并两个JSON
- 如何合并两个 JSON 文件,然后检索它