0

在这里,我有一个函数,它返回一个基于 google places API 的位置对象列表,所以函数 findPlaces 是:

function findPlaces(boxes,searchIndex) {
   var request = {
       bounds: boxes[searchIndex],
            types: ["restaurant"]
   };

我想如何更改此变量请求 - 列表菜单上的更改类型,因此这是 HTML:

<label for="select"></label>
        <select name="select" id="select">
          <option>restaurant</option>
          <option>bar</option>
          <option>museum</option>
          <option>gas_station</option>
        </select>

所以当我更改列表/菜单上的值以更改变量请求时,我需要 - types["newValue"]

我怎么能这样做?

我尝试使用此代码但不起作用:

function findPlaces(boxes,searchIndex) {
   var request = {
       bounds: boxes[searchIndex],
            types: document.getElementById("select")[document.getElementById("select").selectedInd‌ex].value
   };

并尝试使用此代码,但再次不起作用:

$("#select").change(function(){

        var values= $('#select option').map(function(){
                        return this.value;
                    }).get();
        var index=jQuery.inArray($(this).val(), values);

        findPlaces(boxes, index);


    });
function findPlaces(boxes,searchIndex) {
       var request = {
           bounds: boxes[searchIndex],
                types: [index]
       };

我怎么能这样做?所以首先我需要在 HTML 中更改值更改变量请求 - types["value"] 并更新函数 findPlaces ???

4

2 回答 2

0

它是单选还是多选?但无论如何你可以试试这个:

function findPlaces(boxes,searchIndex) {
   var request = {
       bounds: boxes[searchIndex],
       types: [$("#select").val()]
   };
}

只需使用 jQuery 对象来选择#select元素并使用它的值(被选择的元素)作为类型。

于 2013-09-16T14:33:19.587 回答
0

您必须注意在对象中使用 DOM 方法,因为您必须尊重 mvc 模型。

我建议您将 types 变量作为方法公开,并在更改此类型的代码中调用传递新类型的方法。

function Places(){
    var type = "";// you could set a default value

    function findPlaces(boxes,searchIndex) {
       var request = {
           bounds: boxes[searchIndex], 
           types: [type]
       };
    }

    function changeType(value){
        type = value
    }

}

因此,您使用的是 js OO,并且可以在选择元素更改时调用 changeType。

var _place = new Places();

$("#selectionElement").change(function(){
    _place.changeType($(this).value);
});

编辑1:

我在小提琴做了一个例子:http: //fiddle.jshell.net/R3xb7/1/

编辑2:

使用您的工具的示例:http: //jsbin.com/ujExolI/1/

于 2013-09-16T14:38:16.487 回答