从每个循环函数中获取变量

时间:2015-12-07 07:02:44

标签: jquery function variables

好的,这可能会多次询问我已经检查了所有解决方案但是无法理解它...请帮我解决这个问题。

  1. 在表单ID上运行每个循环,并获取具有特定名称的所有输入字段。
  2. 从循环函数外部访问结果。
  3. HTML代码

        var inputType = $('#form-main input[name="position"]').each(function(){
            inputType = $(this).attr('id');           
            console.log('Data Types are : ' + inputType);
        });
    

    以下是循环代码。

    WindowManager.LayoutParams params=new WindowManager.LayoutParams();
    params.type = WindowManager.LayoutParams.TYPE_PHONE;
                params.format = PixelFormat.RGBA_8888; 
                params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                        | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
                        | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                        | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
                params.width = WindowManager.LayoutParams.FILL_PARENT;
                params.height = WindowManager.LayoutParams.WRAP_CONTENT;
                params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
    windowManager= (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    windowManager.addview(new Banner(),params);
    

    当console.log被放置在循环或函数内时,我得到[left,center,right]

    如何在函数或循环外访问此结果。当console.log放在循环或函数之外时,我得到[object object]

3 个答案:

答案 0 :(得分:1)

对于你,基于你对JavaScript(JQuery)的了解,我会在循环之外创建一个变量并填充它,例如:

var dataType = [];
$('#form-main input[name="position"]').each(function(){
        dataType.push($(this).attr('id'));           
    });
console.log('Data Types are : ' + dataType);

有很多方法可以显着缩短和优化您的代码,如果您想要一些更高级的选项,请检查this page,但这个答案应该符合您的目的,并有助于了解更好的内容。

关于你应该在JavaScript here中声明变量的位置也是一个很好的辩论。

<强>更新

$('#form-main input[name="position"]').each(function(){
            var value = $(this).attr('id');
            if (value != null) // if the value isn't null
            dataType.push(value);           
        });
    console.log('Data Types are : ' + dataType);

同样有更好的方法可以做到这一点,但这是最容易阅读和向IMO学习的内容,如果你有一个快速的谷歌搜索,有很多关于这些主题的材料

答案 1 :(得分:0)

相反,您应该使用.map()通过从元素值创建数组来获取值:

var dataType = $('#form-main input[name="some-type"]').map(function() {
  return this.id;
}).get();

console.log(dataType);

并使用原生js方法.map()

&#13;
&#13;
var els = document.querySelectorAll('#form-main input[name="some"]'),
  dataType = [].map.call(els, function(el) {
    return el.id;
  });

document.querySelector('pre').innerHTML = JSON.stringify(dataType);
&#13;
<form id='form-main' method='post' action='#'>
  <input name='some' id='a'>
  <input name='some' id='b'>
  <input name='some' id='c'>
  <input name='some' id='d'>
</form>

<pre></pre>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

在您的情况下,您可以使用此功能;

 $('input[name=radioName]:checked', '#myForm').val();

但是使用以下方法很简单;

获取名为“myForm”的表单的所选radioName项的值:

Try this. It will definelty help you out.

CREATE OR REPLACE FUNCTION f2(
    v_nume employees.last_name%TYPE DEFAULT 'Bell')
  RETURN NUMBER
IS
  salariu employees.salary%type;
  outretvalue NUMBER(2) := 0;
  lv_cnt PLS_INTEGER;
BEGIN
  SELECT salary INTO salariu FROM employees WHERE last_name = v_nume;
  RETURN salariu;
EXCEPTION
WHEN NO_DATA_FOUND THEN
  outretvalue := 1;
WHEN TOO_MANY_ROWS THEN
  SELECT COUNT(1) INTO lv_cnt FROM employees WHERE last_name = v_nume;
  INSERT INTO info
    ( no_lines
    ) VALUES
    ( lv_cnt
    );
    RETURN 2;
WHEN OTHERS THEN
RETURN 3;
END f2; 

以下是一个示例:Fiddle