这是我的问题:我有两个输入字段,单击按钮时会触发一个函数,使用这两个输入值(通过对象构造函数)创建一个新对象。
该函数中包含的console.log以正确的方式显示object.input1和object.input2。但是,一旦功能完成,我尝试再次控制台记录新创建的对象OR object.input1 OR object.input1,我会得到“未定义”
如果我将新创建的对象推送到数组中,可以,我可以从数组访问对象,但是不确定在数组内部时如何访问对象元素。无论如何,我不明白在创建新对象时我做错了什么。任何帮助将不胜感激。
<html>
<input type="number" id='input1' placeholder="Enter number only">
<input type="text" id='input2' placeholder="Max length 300" maxlength='300'>
<button id='btn'>Submit</button>
<script>
var day1, notes1, day1List;
function DayList(day, notes) {
this.day = day;
this.notes = notes;
}
document.getElementById('btn').onclick =
function() {
var day1 = document.getElementById('input1').valueAsNumber;
var notes1 = document.getElementById('input2').value;
var day1List = new DayList(day1, notes1);
console.log(day1List.day, day1List.notes);
}
</script>
</html>
答案 0 :(得分:3)
即使您全局声明变量:
String filePath; // File path plus name and file extension
String directory; // File directory
if (returnVal == JFileChooser.APPROVE_OPTION) {
directory = fc.getSelectedFile().getName();
} else {
directory = "Error in selection";
}
filePath = directory + "\\" + folderName;
您没有设置这些,因为您是在函数范围内重新声明它们:
var day1, notes1, day1List;
只需删除var声明即可应用于全局范围:
function() {
var day1 = document.getElementById('input1').valueAsNumber;
var notes1 = document.getElementById('input2').value;
var day1List = new DayList(day1, notes1);
}
但是,查看您的结构,我相信您只需要将day1List作为全局变量。其余的似乎都存储在其中。
答案 1 :(得分:0)
正如狂热爱好者所说,删除double var声明。我也重构了您的代码。通常,您应该使用addEventListener
而不是onclick
。这被认为是最佳做法。
let day1, notes1, day1List;
function DayList(day, notes) {
this.day = day;
this.notes = notes;
}
document.getElementById('btn').addEventListener('click', () => {
day1 = document.getElementById('input1').valueAsNumber;
notes1 = document.getElementById('input2').value;
day1List = new DayList(day1, notes1);
console.log(day1List.day, day1List.notes);
})
<input type="number" id='input1' placeholder="Enter number only">
<input type="text" id='input2' placeholder="Max length 300" maxlength='300'>
<button id='btn'>Submit</button>