【问题标题】:Identify Hidden Form Value Without an ID or Class识别没有 ID 或类的隐藏表单值
【发布时间】:2013-04-13 05:23:11
【问题描述】:

我正在编写一个 Greasemonkey 脚本,我需要能够从隐藏的表单元素中获取值并将其设置为变量。

隐藏的表单值如下所示:

 <input type="hidden" name="ASIN" value="B009MO89Y4" />

我没有 ID、类或任何我能看到的将“值”设置为变量的方式。这需要动态工作,我目前无法为此值建立类或 ID。

是否有 Javascript(或 jQuery)方法来设置它?

换句话说:

找到名称为“ASIN”的“输入”并将 .val() 设置为变量?

【问题讨论】:

    标签: javascript jquery forms input greasemonkey


    【解决方案1】:

    这个选择器和赋值:

    $("input[name='ASIN']").val(); <---- returns value of that input
    
    var inputVal = $("input[name='ASIN']").val(); <-- Assigns it
    
    var temp = "Stuff";
    $("input[name='ASIN']").val(temp); <----Assigns the value of the temp var.
    

    【讨论】:

    • 非常感谢。我一直在尝试一些更简单但无法正常工作的东西。一些页面的 ID 为 #ASIN,其值已设置,因此我将其设置为 #ASIN。从来没有想过会这么容易:) 再次感谢你!
    【解决方案2】:

    您可以使用 jQuery attribute equals selector

    $('input[name="ASIN"]').val(foo);
    

    【讨论】:

      【解决方案3】:

      您可以通过选择它。 jQuery 中的名称如下:

      var bar = "Example"; // Example text, to be used in val().
      var x = $('input[name="ASIN"]').val(bar);  
      // Sets the variable x to be the value bar for the input with the name ASIN.
      

      这是一个有效的 jQuery jsFiddle.


      Javascript *

      var bar = "Example";  
      document.getElementsByName("ASIN")[0].value = bar;
      

      这是一个有效的 Javascript jsFiddle


      *请注意,虽然document.getElementsByName 在 Firefox、Chrome 和 Safari 中得到了很好的支持,但在 IE 和 Opera 中却有 limited browser support.

      【讨论】:

      • 请注意,document.getElementsByName 的浏览器支持有限:W3C DOM Compatibility - Core
      • @cmptrgeekken 我已将其纳入答案,谢谢。只是觉得用纯 Javascript 的方式而不是 jQuery 答案会很好!
      【解决方案4】:

      像这样:

       $('input[name="ASIN"]').val();
      

      变量:

      var hiddenAsin = $('input[name="ASIN"]').val();
      

      【讨论】:

        【解决方案5】:

        您可以使用任何属性过滤您的选择。

        $('input[name=ASIN]').val("New Value")
        

        【讨论】:

          【解决方案6】:

          您可以使用以隐藏类型输入为目标的选择器。它应该是这样的:

          $('input[type=hidden]');
          

          或更简单:

          $(':hidden');
          

          【讨论】:

            【解决方案7】:

            使用这个方法

            var inputs = document.getElementsByTagName('input');
            for(var i = 0...)
            {
                //go through each input and look for the name "ANSI" and the type is hidden.
            
                 //and do your changes. 
            }
            

            这是为 javascript 记住的。

            有了这个,您应该能够在没有 ID 或分配给该特定表单的类的情况下获得该特定隐藏表单。

            【讨论】:

            • for(int i = 0...) ?据我所知,Javascript 中没有 int 数据类型。你的意思可能是for(var i=0; ...)
            • 啊,是的,我的错,这是习惯哈哈。但是,是的,你明白了我的意思。有了这个,它应该可以帮助他解决他的问题。
            【解决方案8】:

            对于纯 JavaScript:

            试试document.getElementsByName('name')
            请注意,cmptrgeekken 指出这有 limited browser-support(尽管这不会是 FF 中的油脂猴的问题)。

            作为替代方案,如果该隐藏元素具有固定位置,您还可以通过从knownParent.getElementsByTagName('tag')[#] 获得的可预测集合中的索引号访问它(因此表单内的第一个隐藏输入标签将是数字 0)。

            另一个变体是(再次)获取knownParent.getElementsByTagName('tag') 并遍历该集合以查看哪个元素具有您所寻找的“名称”属性集。 只需这样做:

            var target=knownParent.getElementsByTagName('input'), L=target.length;
                       while(L--){ if(target[L].name==='name'){target=target[L]; break;} }
            alert(target.value); //target is now the element you seek.
            

            例如小提琴here

            祝你好运!

            【讨论】:

              猜你喜欢
              • 2013-10-09
              • 1970-01-01
              • 1970-01-01
              • 2019-07-10
              • 1970-01-01
              • 2021-01-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多