选择选项时更改

10 浏览
0 Comments

选择选项时更改

我有这样的JSON数据:\n[{\n \"user_id\": \"113\",\n \"employe_first_name\": \"Asaladauangkitamakan\",\n \"employe_last_name\": \"Nasibb\"\n }, {\n \"user_id\": \"105\",\n \"employe_first_name\": \"Ryan\",\n \"employe_last_name\": \"Friday\"\n }, {\n \"user_id\": \"87\",\n \"employe_first_name \":\"hendi \",\n \"employe_last_name \":\"kenther\"\n }\n]\n\n如何使用JavaScript“创建”带有选项(value = user_idtext = employe_first_name)的选择框,并在文档准备就绪时加载,然后使用所选值填充另一个字段。

0
0 Comments

问题出现的原因是在页面加载完成之前尝试使用select元素的change事件。在上面的代码中,通过使用setInterval函数来检查文档的readyState属性是否为'complete',一旦文档加载完成,就会执行后续的代码。在这段代码中,通过获取select元素的id,并遍历一个json数组,将json数组中的每个元素添加为select元素的一个option选项。

然而,由于在页面加载完成之前尝试使用select元素的change事件,可能会导致select元素还未完全加载,从而无法触发change事件。为了解决这个问题,可以将代码放在页面加载完成后再执行,或者使用jQuery的document.ready()函数来确保代码在文档加载完成后执行。

以下是解决方法的示例代码:

// 确保DOM加载完成后执行代码
document.addEventListener("DOMContentLoaded", function() {
    var json_len = json.length;
    var select = document.getElementById('select_id');
    for(var i=0;i<json_len;i++){
        var option = document.createElement('option');
        option.innerHTML = json[i].employe_first_name;
        option.value = json[i].user_id;
        select.appendChild(option);
    }
});
// 或者使用jQuery的document.ready()函数
$(document).ready(function() {
    var json_len = json.length;
    var select = document.getElementById('select_id');
    for(var i=0;i<json_len;i++){
        var option = document.createElement('option');
        option.innerHTML = json[i].employe_first_name;
        option.value = json[i].user_id;
        select.appendChild(option);
    }
});

通过以上方法,我们可以确保代码在文档加载完成后执行,从而避免了在select元素尚未完全加载时尝试使用其change事件的问题。

0
0 Comments

问题的原因是在创建option元素时,使用了错误的方法,将HTML字符串作为参数传递给了document.createElement方法。

解决方法是将创建option元素的代码修改为正确的方法,即使用document.createElement("option")。然后将option的value和innerHTML属性设置为对应的数据值,最后将option元素添加到select元素中。

具体代码如下:

var data = [
  {"user_id":"113","employe_first_name":"Asaladauangkitamakan","employe_last_name":"Nasibb"},
  {"user_id":"105","employe_first_name":"Ryan","employe_last_name":"Friday"},
  {"user_id":"87","employe_first_name":"hendi","employe_last_name":"kenther"}
];
var select = document.createElement("select");
for(var i = 0; i < data.length; i++){
  var option = document.createElement("option");
  option.value = data[i].user_id;
  option.innerHTML = data[i].employe_first_name;
  select.appendChild(option);
}
// 将select元素添加到页面中的某个容器中
document.getElementById("container").appendChild(select);
// 监听select元素的change事件
select.addEventListener("change", function(){
  // 获取选中的option的value值
  var selectedValue = select.value;
  
  // 将选中的值填充到另一个字段中
  document.getElementById("anotherField").value = selectedValue;
});

以上代码通过遍历数据数组,创建option元素,并将其添加到select元素中。然后使用addEventListener方法监听select元素的change事件,在事件处理函数中获取选中的option的value值,并将其填充到另一个字段中。

可以在此DEMO中查看代码运行效果。

0
0 Comments

问题的出现原因是代码中使用了错误的事件监听器方法名,应该是`addEventListener`而不是`addEventListenter`。

解决方法是将错误的方法名`addEventListenter`改为正确的方法名`addEventListener`。

整理成文章如下:

在上述代码中,创建了一个包含选项的下拉菜单,并将其添加到DOM中。然而,在代码中存在一个错误,导致无法正确监听下拉菜单的选择事件。

错误出现在`select.addEventListenter("change", function(event) {`这一行。正确的方法名应该是`addEventListener`而不是`addEventListenter`。

要解决这个问题,只需将错误的方法名改正为正确的方法名`addEventListener`即可。修改后的代码如下:

select.addEventListener("change", function(event) {
    var selected_value = event.target.value;
    document.getElementById("another_field").value = selected_value;
});

通过以上修改,现在可以正确监听下拉菜单的选择事件,并将选中的值赋给`another_field`元素的值。这样,问题就得到了解决。

0