Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript internet explorer 8不支持Java脚本对象和属性_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript internet explorer 8不支持Java脚本对象和属性

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 =

我创建了一个带有一些属性的JavaScript对象,并将一些值放入其中

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
的属性ect
summaryViewObject
。我也使用了var summaryViewObject={};它也给出了同样的错误。你误用了一个数组。@CrazyTrain:不,他没有,
summaryViewObject
是一个索引
0
处有一个项目的数组。数组文字
[]
不过。我故意把它写得很详细,以便向提问者展示我到底采取了哪些步骤。如果你看到我的评论,设置对象属性的三行代码只是一个用法示例。