Javascript internet explorer 8不支持Java脚本对象和属性
我创建了一个带有一些属性的JavaScript对象,并将一些值放入其中Javascript internet explorer 8不支持Java脚本对象和属性,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我创建了一个带有一些属性的JavaScript对象,并将一些值放入其中 var summaryViewObject[transactionId] = new Object(); summaryViewObject[transactionId].paymentTotal = 0; summaryViewObject[transactionId].numberOfTransactions = 0; summaryViewObject[transactionId].returnedPayment =
var summaryViewObject[transactionId] = new Object();
summaryViewObject[transactionId].paymentTotal = 0;
summaryViewObject[transactionId].numberOfTransactions = 0;
summaryViewObject[transactionId].returnedPayment = false;
当我们得到诸如,returnedPayment
等属性时,它在IE8中显示错误,但在其他浏览器(如Chrome、IE9和Firefox)中工作正常
请帮助我理解JavaScript对象和属性支持
错误类型错误:无法获取属性“returnedPayment”的值:对象为null或未定义
这一行:
var summaryViewObject[transactionId] = new Object();
无效,因为未定义summaryViewObject
,并且在定义之前无法在其上创建[transactionId]
属性
试试这个:
var summaryViewObject = {};
summaryViewObject[transactionId] = {};
summaryViewObject[transactionId].paymentTotal = 0;
summaryViewObject[transactionId].numberOfTransactions = 0;
summaryViewObject[transactionId].returnedPayment = false;
另外,=newobject()
和={}代码>基本上是相同的。这应该可以:
var transactionId = 0;
var summaryViewObject = new Array();
summaryViewObject[transactionId] = ({
paymentTotal: 0,
numberOfTransactions: 0,
returnedPayment: true});
//These lines below are here to show you that you can now edit them like so:
summaryViewObject[transactionId].paymentTotal = 0;
summaryViewObject[transactionId].numberOfTransactions = 0;
summaryViewObject[transactionId].returnedPayment = false;
//should alert "false" even though we set it to true in the declaration
alert(summaryViewObject[transactionId].returnedPayment);
标记被删除,因为问题与Java无关(我可以看到)。如果我错了,请评论。我认为你不能用这种方式创建变量。由于[
,我已经收到一个错误。您的代码在任何浏览器中都无法工作。IE8不是这里的问题。在您向我们展示的代码中,您没有获得任何属性的值。请发布实际引发此异常的代码部分,并告诉我们其环境(这里举例说明summaryViewObject
和transactionId
是什么)。它运行良好,我的项目在除IE8之外的所有浏览器中都运行良好。transactionId是一个数字。但这在除IE8之外的所有浏览器中都运行良好。请提供使IE8具有对象和属性支持的任何插件类型的东西。我不同意它在所有浏览器中都运行。检查此小提琴上的控制台,我在Chrome中发现一个错误:只要transactionId
有一些值可以用作索引器,如var transactionId=3;
或类似的东西,这应该像Jason P一样工作。@markschultheis,即使transactionId
的值是foo
,它也会工作。它会在obj上查找名为foo
的属性ectsummaryViewObject
。我也使用了var summaryViewObject={};它也给出了同样的错误。你误用了一个数组。@CrazyTrain:不,他没有,summaryViewObject
是一个索引0
处有一个项目的数组。数组文字[]
不过。我故意把它写得很详细,以便向提问者展示我到底采取了哪些步骤。如果你看到我的评论,设置对象属性的三行代码只是一个用法示例。