如果我调用此方法,页面会崩溃

时间:2012-01-02 11:15:21

标签: jquery

我正在使用此方法随机回答表单

  $('table').filter(function () {
      return ($(this).find('input').size() > 0);
  }).find('tr').each(function () {
      $(this).find('input').filter(function () {
          return (Math.round(Math.random()) == 1);
      }).each(function () {
          var typ = this.type;
          if (typ == 'checkbox' || typ == 'radio') {
              this.checked = true;
          }
          if (typ == 'select' || typ == 'select-one') {
              var value = $.map(this, function (elt, i) {
                  return $(elt).val();
              }).sort()[0];
              this.val(value);
          }
          if (typ = "text" || typ == "textarea") {
              $(this).val(Math.floor(Math.random() * 11));
          }
      });
  });

1 个答案:

答案 0 :(得分:1)

      if (typ == 'select' || typ == 'select-one') {
          var value = $.map(this, function (elt, i) {
              return $(elt).val();
          }).sort()[0];
          this.val(value);
      }

input标记没有任何select类型,您无法以this.val(value);方式设置所选值,因为val()是jQuery函数,请尝试{ {1}}(用于输入)。如果您想选择其选项,则必须更改您的slector以包含$(this).val(value)元素。

select

使用单个 if (typ = "text" || typ == "textarea") { $(this).val(Math.floor(Math.random() * 11)); } 代替=,您将重新声明变量使条件==

您还应该能够通过不使用find()和each()来缩短代码。以下选择器会在true中的input元素中选择tr元素,然后按照示例中的方式对其进行随机过滤。

table