Javascript 将addEventListener与对象文字一起使用

Javascript 将addEventListener与对象文字一起使用,javascript,Javascript,我试图使用Douglas Crockford所描述的好的部分来编写JS,因此创建了一个全局对象a。但是我的JS代码有问题。 变量value1和value2的计算结果为NaN,我不明白为什么 我已将两个变量invoited和lastinvoited声明在totalinvoited之外,然后尝试使用this在方法内部获取它们。然而,我不知道这是否正确?我这样做的目的是希望可以对这些变量使用addEventListener,并调用onchange事件 为什么value1和value2评估为NaN 如何

我试图使用Douglas Crockford所描述的好的部分来编写JS,因此创建了一个全局对象
a
。但是我的JS代码有问题。 变量
value1
value2
的计算结果为
NaN
,我不明白为什么

我已将两个变量
invoited
lastinvoited
声明在
totalinvoited
之外,然后尝试使用
this
在方法内部获取它们。然而,我不知道这是否正确?我这样做的目的是希望可以对这些变量使用
addEventListener
,并调用
onchange
事件

为什么
value1
value2
评估为
NaN

如何编写代码,在这两个变量上使用“addEventListener”和onchange事件

这是我的JS代码:

var A = {

invoiced: document.getElementById("invoiced").value,   
lastInvoiced: document.getElementById("lastinvoiced").value,
totalInvoiced: function () {

 var invoiced1 = this.invoiced;
 var lastInvoiced1 = this.lastInvoiced;
 var value1 = parseFloat("invoiced1");
 var value2 = parseFloat("lastInvoiced1");

     if(isNaN(value1))
         value1 = 0;
     if(isNaN(value2))
         value2 = 0;

 var totalInvoiced1 = value1 + value2;
 var value3 = document.getElementById("daytotal").value = totalInvoiced1 + "€";
 return value3;   
 }

 };
window.onload = A.totalInvoiced();
A.invoiced.addEventListener("change", A.totalInvoiced, false);
A.lastInvoiced.addEventListener("change", A.totalInvoiced, false);
首先,
parseFloat(“invoiced1”)
parseFloat(“上次开票”)正在计算字符串
发票1
上次发票
-不是变量-更改该字符串,以便:

parseFloat(invoiced1);
parseFloat(lastInvoiced);

其次,您试图从中获取值的
元素实际上没有设置任何值

  <td><input type="number" id="invoiced" class="boxed" />&euro;</td>

如果您有
A={已开票:…值,
A.invocated.addEventListener
然后您试图将事件侦听器添加到字符串中?是的,从对象
A
属性
已开票
上次开票
@PaulS>中删除
属性,然后如何将事件侦听器添加到值中?我想要总和
开票
+
上次开票
将在用户输入并更改元素值和显示在
TotalInvoinced
中的结果时计算。我已经执行了建议的更改,但它仍然生成相同的结果。实际上,在JSFIDLE上运行它时,它会显示NaN。但当我在浏览器中正常运行它时,我必须插入值,然后只有在我刷新页面时才会执行求和。我调用
addEventListener
的方式有问题吗?我已经完成了您建议的所有更改,但我仍然有相同的问题。当用户将新值插入寄存器时,程序不会执行求和。我不知道为什么,但我发布到我的小提琴上的墨迹有我的HTML的旧版本。我给我的
输入
元素赋值,尽管它们是空值。你提供的链接显示了相同的问题。当硬编码值设置到
输入
元素中时,它会进行求和,但不会使用用户输入执行。t后面会有什么问题他的?我没有正确使用
addEventListener
?这是我的新链接。我希望它现在已经正确更新。实际上,当我在JSFIDLE上运行它时,它会显示NaN。但是当我在浏览器中正常运行它时,我必须插入值,然后只有在刷新页面时,它才会执行总和。我调用的方式有问题吗
addEventListener
?@MMendes这与您的使用有关。请查看console.log(this),并将其更改为a.invoinced.value;等,您就会明白我的意思。现在效果很好!谢谢;)
invoiced: document.getElementById("invoiced"),
lastInvoiced: document.getElementById("lastinvoiced"),
totalInvoiced: function () {
    var invoiced = A.invoiced.value;
    var lastInvoiced = A.lastInvoiced.value; 
    ...