-4

这是javascript中的工作示例

演示

在这里我把它放在那里但(this.value)不工作

$(document).ready(function() { 

 $('#submit').bind("click",function() 
    { 
        var imgVal = $('#file').val();
        var imgName = $('#image_n').val(); 
        var imgDes = $('#image_description').val(); 

        var all_select = document.getElementsByTagName("select");
        for (i = 0; i < all_select.length; i++) {
        all_select[i].onchange = function () {
        alert(this.value);
        }
        }

知道问题是什么或如何解决吗?顺便说一句(这个)看起来不像你在这里看到的那样有颜色

4

2 回答 2

1

this闭包内变化的价值。

$(document).ready(function() { 

  $('#submit').bind("click",function() 
  { 
    var submitButton = $(this); // <-- The call here refers to the #submit click
    var imgVal = $('#file').val();
    var imgName = $('#image_n').val(); 
    var imgDes = $('#image_description').val(); 

    var all_select = document.getElementsByTagName("select");
    for (i = 0; i < all_select.length; i++) {
      all_select[i].onchange = function () {
         var selectElement = $(this); // <-- The call here refers to the select change
         alert(submitButton.val()); // <-- What do you mean to alert?
      }
    }
  }
}
于 2013-09-18T17:06:01.340 回答
1

在您的代码中,您将onchange事件处理程序绑定在“绑定提交”处理程序中,因此在提交事件触发之前不会添加它。我建议将它移到其他之外:

$(document).ready(function () {
    $('#submit').on("click", function () {
        var imgVal = $('#file').val();
        var imgName = $('#image_n').val();
        var imgDes = $('#image_description').val();
    });
    $("select").on('change', function () {
        alert(this.value);
    });
});

注意:如果出于某种原因你喜欢你的语法,你仍然可以这样使用它:

$(document).ready(function () {
    $('#submit').on("click", function () {
        var imgVal = $('#file').val();
        var imgName = $('#image_n').val();
        var imgDes = $('#image_description').val();
    });

    var all_select = document.getElementsByTagName("select");
    for (i = 0; i < all_select.length; i++) {
        all_select[i].onchange = function () {
            alert(this.value);
        };
    }
});
于 2013-09-18T17:11:32.300 回答