Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 h二维数组:第一列是项目i,添加到的innerHTML。第二列是记录id i,添加到的值中:_Javascript_Jquery_Html Select - Fatal编程技术网

Javascript h二维数组:第一列是项目i,添加到的innerHTML。第二列是记录id i,添加到的值中:

Javascript h二维数组:第一列是项目i,添加到的innerHTML。第二列是记录id i,添加到的值中:,javascript,jquery,html-select,Javascript,Jquery,Html Select,PHP $items = $dal->get_new_items(); // Gets data from the database $items_arr = array(); $i = 0; foreach ($items as $item) { $first_name = $item->first_name; $last_name = $item->last_name; $date = $item->date; $show = $fir

PHP

$items = $dal->get_new_items(); // Gets data from the database
$items_arr = array();
$i = 0;
foreach ($items as $item)
{
    $first_name = $item->first_name;
    $last_name = $item->last_name;
    $date = $item->date;
    $show = $first_name . " " . $last_name . ", " . $date;
    $request_id = $request->request_id;
    $items_arr[0][$i] = $show;
    $items_arr[1][$i] = $request_id;
    $i++;
}

echo json_encode($items_arr);
  • JavaScript/Ajax

            function ddl_items() {
                if (window.XMLHttpRequest) {
                    // Code for Internet Explorer 7+, Firefox, Chrome, Opera, and Safari
                    xmlhttp=new XMLHttpRequest();
                }
                else{
                    // Code for Internet Explorer 6 and Internet Explorer 5
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
    
                xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    var arr = JSON.parse(xmlhttp.responseText);
                    var lstbx = document.getElementById('my_listbox');
    
                    for (var i=0; i<arr.length; i++) {
                        var option = new Option(arr[0][i], arr[1][i]);
                        lstbx.options.add(option);
                    }
                }
            };
    
            xmlhttp.open("GET", "Code/get_items.php?dummy_time=" + new Date().getTime() + "", true);
            xmlhttp.send();
        }
    }
    
    函数ddl_项(){
    if(window.XMLHttpRequest){
    //Internet Explorer 7+、Firefox、Chrome、Opera和Safari的代码
    xmlhttp=新的XMLHttpRequest();
    }
    否则{
    //Internet Explorer 6和Internet Explorer 5的代码
    xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
    }
    xmlhttp.onreadystatechange=函数(){
    if(xmlhttp.readyState==4&&xmlhttp.status==200){
    var arr=JSON.parse(xmlhttp.responseText);
    var lstbx=document.getElementById('my_listbox');
    
    对于(var i=0;i,Chrome(jQuery 1.7.1)中的这种解决方案存在排序问题(Chrome按名称/编号对对象属性排序?) 所以为了保持秩序(是的,这是对象滥用),我改变了这一点:

    optionValues0 = {"4321": "option 1", "1234": "option 2"};
    
    对此

    optionValues0 = {"1": {id: "4321", value: "option 1"}, "2": {id: "1234", value: "option 2"}};
    
    然后,$。每个将看起来像:

    $.each(optionValues0, function(order, object) {
      key = object.id;
      value = object.value;
      $('#mySelect').append($('<option>', { value : key }).text(value));
    }); 
    
    $。每个(选项值0,函数(顺序,对象){
    key=object.id;
    value=object.value;
    $('#mySelect').append($('',{value:key}).text(value));
    }); 
    
    尽管前面的答案都是有效答案,但建议先将所有这些内容附加到documentFragmnet,然后将该文档片段作为元素附加到

    大致如下:

    var frag = document.createDocumentFragment();
    
    for(item in data.Events)
    {
        var option = document.createElement("option");
    
        option.setAttribute("value", data.Events[item].Key);
        option.innerText = data.Events[item].Value;
    
        frag.appendChild(option);
    }
    eventDrop.empty();
    eventDrop.append(frag);
    
    对旧版本的改进:

    看来普通的.append也能像预期的那样工作

    $("#mySelect").append(
      $.map(selectValues, function(v,k){
    
        return $("<option>").val(k).text(v);
      })
    );
    
    $(“#mySelect”).append(
    $.map(选择值,函数(v,k){
    返回$(“”).val(k).text(v);
    })
    );
    
    或者更短

    $("#mySelect").append(
      $.map(selectValues, (v,k) => $("<option>").val(k).text(v))
      // $.map(selectValues, (v,k) => new Option(v, k)) // using plain JS
    );
    
    $(“#mySelect”).append(
    $.map(selectValues,(v,k)=>$(“”).val(k).text(v))
    //$.map(selectValues,(v,k)=>newoption(v,k))//使用纯JS
    );
    
    还有另一种方法:

    var options = [];    
    $.each(selectValues, function(key, value) {
        options.push($("<option/>", {
            value: key,
            text: value
        }));
    });
    $('#mySelect').append(options);
    
    var选项=[];
    $.each(选择值、函数(键、值){
    选项。推送($(“”){
    值:键,
    文本:值
    }));
    });
    $('#mySelect')。附加(选项);
    
    如果(data.length!=0){
    var opts=“”;
    对于(数据中的i)
    选项+=“”+数据[i][text]+“”;
    $(“#myselect”).empty().append(opts);
    }
    

    在第一次构建一个巨大的字符串后,这只会对DOM进行一次操作。

    所有这些答案似乎都非常复杂。您只需要:

    var options = $('#mySelect').get(0).options;
    $.each(selectValues, function(key, value) {
            options[options.length] = new Option(value, key);
    });
    
    这是完全跨浏览器兼容的

  • $。对于
    循环,每个
    都比
  • 每次,DOM选择都不是循环
    $(“#mySelect”).append();
  • 因此,最好的解决方案如下

    如果JSON数据
    resp

    [
        {"id":"0001", "name":"Mr. P"},
        {"id":"0003", "name":"Mr. Q"},
        {"id":"0054", "name":"Mr. R"},
        {"id":"0061", "name":"Mr. S"}
    ]
    
    把它当作

    var option = "";
    for (i=0; i<resp.length; i++) {
        option += "<option value='" + resp[i].id + "'>" + resp[i].name + "</option>";
    }
    $('#mySelect').html(option);
    
    var选项=”;
    
    对于(i=0;i我将两个最好的答案组合成一个很好的答案

    var outputConcatenation = [];
    
    $.each(selectValues, function(i, item) {   
         outputConcatenation.push($("<option></option>").attr("value", item.key).attr("data-customdata", item.customdata).text(item.text).prop("outerHTML"));
    });
    
    $("#myselect").html(outputConcatenation.join(''));
    
    var outputConcatenation=[];
    $.each(selectValues,function(i,item){
    outputConcatenation.push($(“”).attr(“value”,item.key).attr(“data customdata”,item.customdata).text(item.text).prop(“outerHTML”);
    });
    $(“#myselect”).html(outputConcatenation.join(“”));
    
    与其到处重复相同的代码,不如编写自己的jQuery函数,如:

    jQuery.fn.addOption = function (key, value) {
        $(this).append($('<option>', { value: key }).text(value));
    };
    
    JSON格式:

    [{
        "org_name": "Asset Management"
    }, {
        "org_name": "Debt Equity Foreign services"
    }, {
        "org_name": "Credit Services"
    }]
    
    以及用于将值填充到Ajax success下拉列表的jQuery代码:

    success: function(json) {
        var options = [];
        $('#org_category').html('');  // Set the Dropdown as Blank before new Data
        options.push('<option>-- Select Category --</option>');
        $.each(JSON.parse(json), function(i, item) {
            options.push($('<option/>',
            {
               value: item.org_name, text: item.org_name
            }));
        });
        $('#org_category').append(options);  // Set the Values to Dropdown
    }
    
    success:function(json){
    var期权=[];
    $('#org_category').html('')//在新数据之前将下拉列表设置为空白
    options.push('--Select Category--');
    $.each(JSON.parse(JSON)),函数(i,项){
    选项。推送($(''),
    {
    值:item.org\u名称,文本:item.org\u名称
    }));
    });
    $(“#org_category”).append(options);//将值设置为下拉列表
    }
    
    使用$.map()函数,您可以以更优雅的方式执行此操作:

    $('#mySelect').html( $.map(selectValues, function(val, key){
        return '<option value="' + val + '">'+ key + '</option>';
    }).join(''));
    
    $('#mySelect').html($.map(selectValues,function(val,key){
    返回“”+键+“”;
    }).加入(“”);
    
    $。每个(选择值、函数(键、值){
    $('#mySelect')。附加($(“”{
    值:键,文本:值
    }));
    });
    
    
    使用jquery追加selectbox
    函数setprice(){
    var selectValues={“1”:“测试1”,“2”:“测试2”};
    $.each(选择值,函数(键,值){
    $(“#我的选择”)
    .append($(“”)
    .attr(“值”,键)
    .文本(值));
    });
    }
    1.
    2.
    3.
    4.
    
    You方法显然比上面的“正确”答案更快,因为它使用的jQuery也更少在Chrome和FF3.x中工作,但在IE7中就我所知,如果
    键有一些引号或
    >,并且如果我有两个不想丢失的选项,则会中断。如何将这些新选项值附加到现有选项值上?一个小的改进是使用连接而不是加号进行连接,如:output.push('',value'');可能有帮助:(在我偶然发现这个问题后,这对我是一个帮助)上面列出的清理版本只在Jquery 1.4+中有效。对于旧版本,使用matdumsa的答案中的版本{value:key}应该是{“value”:key},如matdumsa的答案中所示。我不这么认为,因为
    value
    是一个字符串(并且是硬编码的)它不需要被引用,而应该是标题"使用jQuery向JSON对象添加选项的最佳方法是什么?以前从未听说过
    选项
    对象。这是所有浏览器都内置的吗?我尝试使用
    新选项
    ,但发现它在IE6和7中不起作用。我不知道为什么,但许多完整的jQuery选项都起作用。添加选择的好方法。
    newoption('display',value,true)
    @Mark0978实际上这是
    newoption('display',value,true,true)
    ()@CarlHörberg对我来说非常有效-非常简单
    $('mySelect').append($.map(selectValues, (k, v) => new Option(k, v)))
    
    const newoption = (...args) => new Option(...args)
    
    $('mySelect').append($.map(selectValues, newoption))
    
    $.fn.append.apply($('mySelect'), $.map(selectValues, (k, v) => $("<option/>").val(k).text(v)));
    
    $('mySelect').append($.map(selectValues, (k, v) => $("<option/>").val(k).text(v)))
    
    var list = $("#selectList");
    $.each(items, function(index, item) {
      list.append(new Option(item.text, item.value));
    });
    
    var list = document.getElementById("selectList");
    for(var i in items) {
      list.add(new Option(items[i].text, items[i].value));
    }
    
    var options;
    $.each(data, function(index, object) {
        options += '<option value="' + object.id + '">' + object.stop + '</option>';
    });
    
    $('#selectMenu').html(options);
    
    for (var i = 0; i < array.length; i++) {
        $('#clientsList').append($("<option></option>").text(array[i].ClientName).val(array[i].ID));
    };
    
    $items = $dal->get_new_items(); // Gets data from the database
    $items_arr = array();
    $i = 0;
    foreach ($items as $item)
    {
        $first_name = $item->first_name;
        $last_name = $item->last_name;
        $date = $item->date;
        $show = $first_name . " " . $last_name . ", " . $date;
        $request_id = $request->request_id;
        $items_arr[0][$i] = $show;
        $items_arr[1][$i] = $request_id;
        $i++;
    }
    
    echo json_encode($items_arr);
    
            function ddl_items() {
                if (window.XMLHttpRequest) {
                    // Code for Internet Explorer 7+, Firefox, Chrome, Opera, and Safari
                    xmlhttp=new XMLHttpRequest();
                }
                else{
                    // Code for Internet Explorer 6 and Internet Explorer 5
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
    
                xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    var arr = JSON.parse(xmlhttp.responseText);
                    var lstbx = document.getElementById('my_listbox');
    
                    for (var i=0; i<arr.length; i++) {
                        var option = new Option(arr[0][i], arr[1][i]);
                        lstbx.options.add(option);
                    }
                }
            };
    
            xmlhttp.open("GET", "Code/get_items.php?dummy_time=" + new Date().getTime() + "", true);
            xmlhttp.send();
        }
    }
    
    optionValues0 = {"4321": "option 1", "1234": "option 2"};
    
    optionValues0 = {"1": {id: "4321", value: "option 1"}, "2": {id: "1234", value: "option 2"}};
    
    $.each(optionValues0, function(order, object) {
      key = object.id;
      value = object.value;
      $('#mySelect').append($('<option>', { value : key }).text(value));
    }); 
    
    var frag = document.createDocumentFragment();
    
    for(item in data.Events)
    {
        var option = document.createElement("option");
    
        option.setAttribute("value", data.Events[item].Key);
        option.innerText = data.Events[item].Value;
    
        frag.appendChild(option);
    }
    eventDrop.empty();
    eventDrop.append(frag);
    
    $("#mySelect").append(
      $.map(selectValues, function(v,k){
    
        return $("<option>").val(k).text(v);
      })
    );
    
    $("#mySelect").append(
      $.map(selectValues, (v,k) => $("<option>").val(k).text(v))
      // $.map(selectValues, (v,k) => new Option(v, k)) // using plain JS
    );
    
    var options = [];    
    $.each(selectValues, function(key, value) {
        options.push($("<option/>", {
            value: key,
            text: value
        }));
    });
    $('#mySelect').append(options);
    
    if (data.length != 0) {
        var opts = "";
        for (i in data)
            opts += "<option value='"+data[i][value]+"'>"+data[i][text]+"</option>";
    
        $("#myselect").empty().append(opts);
    }
    
    var options = $('#mySelect').get(0).options;
    $.each(selectValues, function(key, value) {
            options[options.length] = new Option(value, key);
    });
    
    [
        {"id":"0001", "name":"Mr. P"},
        {"id":"0003", "name":"Mr. Q"},
        {"id":"0054", "name":"Mr. R"},
        {"id":"0061", "name":"Mr. S"}
    ]
    
    var option = "";
    for (i=0; i<resp.length; i++) {
        option += "<option value='" + resp[i].id + "'>" + resp[i].name + "</option>";
    }
    $('#mySelect').html(option);
    
    var outputConcatenation = [];
    
    $.each(selectValues, function(i, item) {   
         outputConcatenation.push($("<option></option>").attr("value", item.key).attr("data-customdata", item.customdata).text(item.text).prop("outerHTML"));
    });
    
    $("#myselect").html(outputConcatenation.join(''));
    
    jQuery.fn.addOption = function (key, value) {
        $(this).append($('<option>', { value: key }).text(value));
    };
    
    $('select').addOption('0', 'None');
    
    [{
        "org_name": "Asset Management"
    }, {
        "org_name": "Debt Equity Foreign services"
    }, {
        "org_name": "Credit Services"
    }]
    
    success: function(json) {
        var options = [];
        $('#org_category').html('');  // Set the Dropdown as Blank before new Data
        options.push('<option>-- Select Category --</option>');
        $.each(JSON.parse(json), function(i, item) {
            options.push($('<option/>',
            {
               value: item.org_name, text: item.org_name
            }));
        });
        $('#org_category').append(options);  // Set the Values to Dropdown
    }
    
    $('#mySelect').html( $.map(selectValues, function(val, key){
        return '<option value="' + val + '">'+ key + '</option>';
    }).join(''));
    
    $.each(selectValues, function(key, value) {
        $('#mySelect').append($("<option/>", {
            value: key, text: value
        }));
    });
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <title>append selectbox using jquery</title>
      <meta charset="utf-8">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
      <script type="text/javascript">
        function setprice(){
            var selectValues = { "1": "test 1", "2": "test 2" };
            $.each(selectValues, function(key, value) {   
         $('#mySelect')
             .append($("<option></option>")
                        .attr("value",key)
                        .text(value)); 
    });
    
        }
      </script>
    </head>
    <body onload="setprice();">
    
    
          <select class="form-control" id="mySelect">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
      </select>
    
    
    </body>
    </html>