Internet Explorer不会读取对象属性

时间:2015-09-03 13:11:27

标签: javascript internet-explorer browser

注释掉的部分在IE中不起作用,但在其他浏览器中有效。

[query.outFields [1]]上的IE错误声称需要字符串或数字。 有什么想法吗?有关如何让IE与这些注释行一起工作的任何想法吗?

                             var attS = 
                            {
                                //[query.outFields[1]]: pin, 
                                //[query.outFields[0]]: vars[0], 
                                //[query.outFields[2]]: vars[5], 
                                //[query.outFields[3]]: vars[6],
                                PIN: pin, 
                                APN: vars[0], 
                                PARCELAREA: vars[5], 
                                AREATYPE: vars[6],
                                PARCELVER:working[0],
                                PERMITNUM:working[1],
                                ADDRESSID:working[2]
                            } 

如果您认为它有帮助,那么这是整个代码块。

                for(j =0;j<multiPermit.length;j++)
                {
                    var vars = multiPermit[j];
                    console.log(vars);
                    //center X
                    var x = vars[2];
                    //center Y
                    var y = vars[3];                                                
                    var pin = vars[4];
                    //console.log(pin);

                    //Delete source geometry for multi point from final data to ensure it's not represented twice.
                    for(l=0;l<inputInfo.data.length;l++)
                    {
                        temp = inputInfo.data[l];
                        if(temp.attributes[query.outFields[0]]==vars[0] && temp.x == x && temp.y==y)
                        {
                            inputInfo.data.splice(l,1);
                        }                              
                    }                        

                    //var Test=query.outFields[1];
                    //console.log(Test);
                    for(var i=0; i<zipArray.length;i++)
                    {
                        var working = zipArray[i];
                        if(working[0]==vars[0])
                        {          
                            var quickPush=inputInfo.data    

                            var newX = x;
                            var newY = y;


                             var attS = 
                            {
                                //[query.outFields[1]]: pin, 
                                //[query.outFields[0]]: vars[0], 
                                //[query.outFields[2]]: vars[5], 
                                //[query.outFields[3]]: vars[6],
                                PIN: pin, 
                                APN: vars[0], 
                                PARCELAREA: vars[5], 
                                AREATYPE: vars[6],
                                PARCELVER:working[0],
                                PERMITNUM:working[1],
                                ADDRESSID:working[2]
                            } 

                            //console.log(attS);
                            quickPush.push({"x": newX,"y": newY,"attributes": attS})
                        }
                    }
                }                                        

2 个答案:

答案 0 :(得分:2)

计算属性名称({ [likeThis]: "here" })是EcmaScript 6中的新功能,但Internet Explorer尚不支持。

您需要创建对象,然后再添加变量字段。

 var attS = {
   PIN: pin,
   APN: vars[0],
   PARCELAREA: vars[5],
   AREATYPE: vars[6],
   PARCELVER: working[0],
   PERMITNUM: working[1],
   ADDRESSID: working[2]
 };
 attS[query.outFields[1]] = pin;
 // etc

答案 1 :(得分:1)

如果我遇到问题,我不是100%,但我认为您在javascript中混合了两种定义对象属性的方法。

您正在尝试

<?php 
    $wq = new WP_Query($args); // $args are the same as the args for query_posts()
?>

<?php if ($wq->have_posts()) : ?><?php while ($wq->have_posts()) : $wq->the_post(); ?>
               <tr>
                  <td id="username"><?php the_title(); ?></td>

                  <td>
                      <video class="video" width="200" height="100">
                        <source src="<?php echo $rs->user->profile_video;?>" type="video/mp4">
                        Your browser does not support the video.
                      </video>
                </td>
                  <td id="status"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"></a></td>
                  <td><select class="action">
                      <option>-Select-</option>
                      <option value="1" >Active</option>
                      <option value="0">Inactive</option>
                      <option value="edit">Edit</option>
                      <option value="4">Delete</option>
                    </select></td>
                </tr>


<?php endwhile; ?>
<?php endif; ?>

这在Internet Explorer上是不可能的。解决这个问题的方法就是添加:

var myObject = {
   prop1 : value,
   prop2 : value,
   [prop3nameWhichIsPartOfOtherVar]: value
}

定义后。

有关哪些有效或无效(以及浏览器兼容性)的更多信息:here