Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t get.each()在JQuery中工作_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript Can';t get.each()在JQuery中工作

Javascript Can';t get.each()在JQuery中工作,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,关于这个问题 我试图在一个页面上迭代一系列表单,并用这些表单做一些“事情”,但我无法让它工作。代码如下: HTML: 以下是我正在尝试的脚本: function getPlacement() { $('.placement-form').each(function(){ var site, placement_desc, placementtype, size, pricing, servetype; site = document.getElemen

关于这个问题

我试图在一个页面上迭代一系列表单,并用这些表单做一些“事情”,但我无法让它工作。代码如下:

HTML:

以下是我正在尝试的脚本:

function getPlacement() {
    $('.placement-form').each(function(){
        var site, placement_desc, placementtype, size, pricing, servetype;  
        site = document.getElementById("site").value;
        placement_desc = document.getElementById("placementdesc").value;
        placementtype = document.getElementById("placementtype").value;
        size = document.getElementById("size").value;
        pricing = document.getElementById("pricing").value;
        servetype = document.getElementById("servetype").value;
        document.getElementById("placement_span").innerHTML = '<br />'+site+'_'+placement_desc+'_'+placementtype+'_'+size+'_'+pricing+'_'+servetype;
        return false;
    });
}
函数getPlacement(){ $('.placement form')。每个(函数(){ 变量站点、放置描述、放置类型、大小、定价、服务类型; site=document.getElementById(“site”).value; placement_desc=document.getElementById(“placementdesc”).value; placementtype=document.getElementById(“placementtype”).value; size=document.getElementById(“size”).value; 定价=document.getElementById(“定价”).value; servetype=document.getElementById(“servetype”).value; document.getElementById(“placement_span”).innerHTML='
'+site+'+placement_desc+'+placementtype+'+size+'+pricing++servetype; 返回false; }); } 我对.each()函数的理解是,它将遍历名为“placement form”的表单的每个实例的DOM,然后运行接下来的几个语句。这是不对的吗?如果您能在这方面提供帮助,我将不胜感激

代码

$('.placement-form').each(function(){
将使用
class=“placement form”
迭代所有元素。因此,在您的代码片段中,您将永远不会迭代任何内容,因为没有具有“placement form”类名的内容

要迭代id为“pagement form”的表单中的元素,可以尝试以下操作

$("#placement-form *").each(function(){

您犯的错误是,
中的选择器。每个
命令都使用
.placement form
-它查找具有类placement form的任何元素。。。您正在创建id为placement form(x)的元素

我建议为每个新创建的表单添加一个类(因为id必须是唯一的,但类没有这样的要求)

或者只需确保原始版本具有以下类别:

<form action="" id="placement-form" class="placement-form">
上面查找id以
placement form
开头的任何元素


编辑:这里有一些让
getPlacement
函数工作的提示

1) 将id为
placement\u span
的span更改为类。您将得到许多这样的结果,正如前面指出的,id必须是唯一的。这也将有助于您在循环所有
位置表单时找到正确的位置

2) 删除
返回false
,因为这会停止
。每个
都位于第一个匹配的表单(意味着只有第一个表单有效)

3) 更改
getPlacement
以使用jQuery,特别是向选择器提供第二个参数以将搜索范围缩小到当前表单。下面是一些工作代码:

$('.placement-form').each(function(){
    var $form = $(this);
    var site, placement_desc, placementtype, size, pricing, servetype;  
    site =  $(".site",$form).val()
    placement_desc = $(".placementdesc",$form).val();
    placementtype = $(".placementtype",$form).val();
    size = $(".size",$form).val();
    pricing = $(".pricing",$form).val();
    servetype = $(".servetype",$form).val()
    $(".placement_span",$form).html('<br />'+site+'_'+placement_desc+'_'+placementtype+'_'+size+'_'+pricing+'_'+servetype);
    });
}
$('.placement form')。每个(函数(){
var$form=$(此);
变量站点、放置描述、放置类型、大小、定价、服务类型;
site=$(“.site”,$form).val()
placement_desc=$(“.placementdesc”,$form).val();
placementtype=$(“.placementtype”,$form).val();
size=$(“.size”,$form).val();
定价=$(“.pricing”,$form).val();
servetype=$(“.servetype”,$form).val()
$(“.placement\u span,$form).html(“
”+站点+”位置描述+”位置类型+”大小+”价格+”服务类型); }); }
活生生的例子:

 $('.placement-form').each(function(){
您正在选择类名为“placement form”的所有dom元素

尝试将类名添加到表单中:

<h3>Placement</h3>
    <form action="" id="placement-form" class="placement-form">
位置

根据您的代码,它将使用一类放置表单循环遍历所有条目。您需要$(“#placement form”)才能使用id。但是,为什么您在一个页面上使用每个元素,并且只有一个条目-您希望有多个#placement form元素吗?

应该是这样的

$('.placement form')。每个(function(){//etc})

通过查找.placement表单可以使用类选择器,但在用于添加行的函数中,它仅设置id attr。也许你可以在addRow函数中添加这个类,我认为这应该可以解决你的问题


检查以获取参考。

您必须使用$('#placement form')。each()@ocnal-只有原始元素具有该id,克隆被赋予序列号(
#placement-form1
#placement-form2
等)只是一个提示:在.each()循环之前声明变量<代码>函数getPlacement(){var site,placement_desc,placementtype,size,pricing,servetype;$('.placement form')。每个(函数(){
他实际上用文本和代码描述了克隆原始表单以制作表单的多个副本。@Schroedingers Cat是的,如果你看代码,我正在克隆表单,这样克隆的表单将有一个ID placement-form1、placement-form2等等,在这种情况下,ID将不起作用,你必须像其他人一样添加一个类ted.实际上这不会抛出ay JavaScript错误,但当我运行concatenate函数时,它也不会显示任何输出:S@Kiz-您的
getPlacement
函数有许多错误,主要是因为您使用的是
getElementById
,但提供了在表单的每个克隆中重复的元素的类名。您应该我会一直使用jQuery。如果你需要的话,我会很快用更多信息更新我的答案!谢谢,我在我的机器上意识到这一点后,实际上已经更新了。但仍在尝试调试并查看发生了什么。我的jQuery技能没有我希望的那么好!我会更容易地一直使用jQuery吗?我该怎么做呢ng这个?太好了。非常感谢。我试过这个,因为我想迭代那些有“放置表单”的表单,但似乎不起作用-有什么想法吗?@Jamiec事实上这并没有错。他在我给出答案后编辑了这个问题。当表单id为“放置表单”时,他正在寻找类“放置表单”相反。@Richard-不,不,他没有(我可以看到编辑历史)。你只是误解了
$('[id^="placement-form"]').each(...)
$('.placement-form').each(function(){
    var $form = $(this);
    var site, placement_desc, placementtype, size, pricing, servetype;  
    site =  $(".site",$form).val()
    placement_desc = $(".placementdesc",$form).val();
    placementtype = $(".placementtype",$form).val();
    size = $(".size",$form).val();
    pricing = $(".pricing",$form).val();
    servetype = $(".servetype",$form).val()
    $(".placement_span",$form).html('<br />'+site+'_'+placement_desc+'_'+placementtype+'_'+size+'_'+pricing+'_'+servetype);
    });
}
 $('.placement-form').each(function(){
<h3>Placement</h3>
    <form action="" id="placement-form" class="placement-form">
$('.placement-form').each(function(){