首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么没有设置select元素的值?

为什么没有设置select元素的值?
EN

Stack Overflow用户
提问于 2016-05-27 20:46:01
回答 3查看 65关注 0票数 1

虽然为select元素分配值似乎很简单,但我不理解为什么下面的代码将值设置为null,而不是为"form-type“和”type“设置正确的值。所有其他字段都被正确设置。

注意,这些选项是从数据库调用中动态添加的。

视图试验场。

如果你想否决这个问题,请提供一个理由,这样我就可以从我的错误中吸取教训。

getSuccess函数是来自ajax例程的回调。

代码语言:javascript
复制
function getSuccess(data) {
    data = {};
    data.action = 'get-writer-data';
    data.userid = sessionStorage.getItem("user-id");
    console.log("user-id-manage-uloads=" + sessionStorage.getItem("user-id"))
    ajax('post', 'php/manage-uploads.php', data, getSuccess, "Error retrieving writer's data: ");
    $(".tr-clone");
    function getSuccess(data) {
        console.log("data=" + data);
        var trClone = $(".tr-clone");
        var jsonData = $.parseJSON(data);
        var count = 0;
        for (var key in jsonData) count++
        $.each(jsonData, function (key, value) {
            trClone.find(".title").val(value.Title);
            trClone.find(".work-type").val(value.WorkType);
            trClone.find(".form-type").val(value.FormType);
            trClone.find(".genre").val(value.Genre);
            console.log("value.FormType=" + value.FormType + ", form-type.val()=" +  trClone.find(".form-type").val());
            console.log("value.Genre=" + value.Genre + ", genre.val()=" +  trClone.find(".genre").val());
            trClone.find(".form-type").val(value.FormType);
            trClone.find(".nbr-pages").val(value.NumberOfPages);
            trClone.find(".synopsis a[href='" + value.Filename + "']");
            if (key === count - 1) return false;
            trClone = trClone.clone().insertAfter($(".tr-clone:last"));
        });
    }

})

console.log

"OriginalFilename":"MozartWunderkindQueryLetter.pd",{“标题”:“莫扎特,神童”,“0”:“莫扎特,神童”,"WorkType":"1","1":"1",“1”,“1”,“4”,“4”,“4”,“流派”:“12”,"3":"12","NumberOfPages":"250","4":"250",“文件名”:“6532744220.pdf”,"5":"6532744220.pdf",“OriginalFilename”:“MozartWunderkindQueryLetter.pd”,"6":"MozartWunderkindQueryLetter.pd"},{“标题”:“莫扎特,魔幻查询-字母”,“0”:“莫扎特,魔幻查询-字母”,"WorkType":"2","1":"2","FormType":"7",“2”,“体裁”:“9”,"3":"9","NumberOfPages":"129","4":"129","Filename":"9981287843.pdf","5":"9981287843.pdf","OriginalFilename":"MozartWunderkindQueryLetter.pd","6":"MozartWunderkindQueryLetter.pd"} value.FormType=4,form-form.null()=空value.Genre=12,genre.val()=空value.FormType=7,form-form.null()=空value.Genre=9,genre.val()=null

代码语言:javascript
复制
<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Writer's Tryst - Manage Uploads</title>
        <style>
            table { 
                border-spacing:0;
                border-collapse:collapse;
            }
            td, th {
                padding: 5px;
            }
            .nbr-pages {
                width:  48px;
                text-align: right;
                padding-right: 2px;
            }
        </style>
    </head>
    <body>
        <h1>Manage Uploads</h1>
        <table id="table-writer-uploads">
            <tr>
                <th>TItle</th><th>Type</th><th>Form</th><th>Genre</th><th>Length</th><th>PDF</th><th>Delete</th>                
            </tr>
            <tr class="tr-clone">
                <td><input id="title" class="title" name="title" placeholder="Title" required autofocus="true" /></td>
                <td>
                    <select class="work-type" name="work-type">
                        <option value="1">Fiction</option>
                        <option value="2">Non-Fiction</option>       
                    </select>
                </td>
                <td>
                    <select class="form-type" name="form-type">
                    </select>
                </td>
                <td>
                    <select class="genre" name="genre">
                    </select>            
                </td>
                <td><input class="nbr-pages" name="nbrPages" required placeholder="Pages" /></td>
                <td><a href="" class="synopsis" target="_blank">Synopsis/Query Letter</a></td>
                <td><img src="img/icons/delete.png" alt="delete" /></td>
            </tr>
        </table>
        <script src="js/common.js"></script>
        <script src="js/manage-uploads.js"></script>
    </body>
</html>
EN

回答 3

Stack Overflow用户

发布于 2016-05-27 21:33:09

原因是这些<select>元素中没有<option>元素。设置<select>的值实际上意味着选择具有该值的<option>。但是,由于没有设置值的选项,所以元素的值保持在null

当您向这些下拉列表中添加选项时,只要选项值与JSON中的值匹配,您的代码就会工作。注意,它是.work-type工作的,因为它有选项。

票数 1
EN

Stack Overflow用户

发布于 2016-05-27 21:37:10

虽然为select元素分配值似乎很简单,但我不理解为什么下面的代码将值设置为null,而不是为"form-type“和”type“设置正确的值。所有其他字段都被正确设置。

您正在处理“表单类型”和“类型”的空<select>元素。这些元素没有可以选择的<option>元素,因此它们的值仍然是空字符串(而不是null)。

如果该选项还不存在,可以尝试添加该选项:

代码语言:javascript
复制
function selectOrCreate(list, value) {
  list.value = value;
  if (list.value === value) {
    return;
  }

  var option = document.createElement('option');
  option.textContent = value;
  option.value = value;
  list.appendChild(option);
  list.value = value;
}

var newValue = 'something';
var list = document.querySelector('select.form-type');
selectOrCreate(list, newValue);
票数 1
EN

Stack Overflow用户

发布于 2016-05-27 21:00:22

每个方法循环在一个数组上。它不将键和值传递给回调函数,而是将对象的索引传递给函数。因此,您应该通过解析数组索引在函数的第一行中获取对象。然后赋值。

代码语言:javascript
复制
function getSuccess(data) {
    console.log("data=" + data);
    var trClone = $(".tr-clone");
    var jsonData = $.parseJSON(data);
    var count = 0;
    for (var key in jsonData) count++
    $.each(jsonData, function (index) {

        value = jsonData[index];

        trClone.find(".title").val(value.Title);
        trClone.find(".work-type").val(value.WorkType);
        trClone.find(".form-type").val(value.FormType);
        trClone.find(".genre").val(value.Genre);
        console.log("value.FormType=" + value.FormType + ", form-type.val()=" +  trClone.find(".form-type").val());
        console.log("value.Genre=" + value.Genre + ", genre.val()=" +  trClone.find(".genre").val());
        trClone.find(".form-type").val(value.FormType);
        trClone.find(".nbr-pages").val(value.NumberOfPages);
        trClone.find(".synopsis a[href='" + value.Filename + "']");
        if (index === count - 1) return false;
        trClone = trClone.clone().insertAfter($(".tr-clone:last"));
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37491996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档