在Jquery中的.map对象上使用If语句

时间:2014-12-28 22:41:02

标签: javascript jquery

编辑清晰。 (感谢)

在我的页面上,有动态创建的div包含输入元素(它们克隆原始元素)。每个div都引用一个唯一的形式,但输入元素的ID在每个div中都不是唯一的(这可能是个问题)。

下面的代码成功地在我的doc中搜索了所有已创建的div(它们的ID是医疗报告(随机数),收集它们的输入元素,然后输出数组中用逗号分隔的每个字符串。

var $inputs= $("div[id^='medical-report']").find("input").clone();

$("#multi").append(($inputs).map(function() {
return $(this).val();
})
.get()
.join(", "));

}

我想做的是遍历数组(不确定我是否真的创建了一个),然后查看每个输入元素的ID并将每个输入元素的唯一段落文本附加到我页面中的某个区域。它基本上总结了每个div的内容。

(搜索输入并克隆它们)  var $ inputs = $(“div [id ^ ='medical-report']”)。find(“input”)。clone(); 然后 伪代码:

每个div =

如果ID是“nameofdoc”,则添加段落医生的名称是“nameofdoc.val” 如果ID是“datereceived”,则在“datereceived.val”上添加文档 等等。

重申一下,这里的问题可能是“nameofdoc”和“datereceived”不是唯一的ID。然而,容器div是独一无二的。

var $inputs= $("div[id^='medical-report']").find("input").clone();

 $("#multi").append(($inputs).map(function(index) {


 return $(this).val();

 .get();
 if ($(this).is("#MEDRIN")) {
 $("p").text("The medical was received on" +index);
                                                   } 
})

我已经阅读了jquery API中的.each和.contents,但我真的不确定要进入的方向。下面是Fiddle。

http://jsfiddle.net/gdoax9q2/7/

1 个答案:

答案 0 :(得分:1)

这里有很多问题。我将列出解决此问题的步骤。

  1. 重命名" sayHi"到描述此功能的名称。 " generateReportSummaries"似乎合适。

  2. 我删除了所有innerHTML内容,因为我不知道它在做什么。

  3. 使用jQuery抓取我们想要创建摘要的所有表单的集合(我给表单每个"报表 - "类使这更容易。

    < / LI>
  4. 创建一个函数,它将获取一个表单元素并返回一个我们可以附加到文档的格式化元素。我调用了我的函数&#34; getReportElement&#34;。

  5. 对于每个表单元素,请调用getReportElement并将结果附加到#mutli。

  6. 实施getReportFormat以映射所有表单输入的值 - 包括输入的名称属性为&#39; MEDRIN&#39;时的条件。加入values数组并将其附加到函数返回的新元素。

    function generateReportSummaries () {
        /* Get a jQuery wrapped collection of all .report-form elements. */
        var $forms = $('.report-form');
    
        /* Call getReportElement for each .report-from. */
        $forms.each(function () {
            $('#multi').append(getReportElement($(this))); 
        });
    }
    
    function getReportElement ($form) {
        /* Create a new paragraph element to contain our text. */
        var $paragraph = $('<p></p>');
    
        /* Get an array of the form's input values. */
        /* If input is [name="MEDRIN"], add prefix text to array value. */
        var mapped_values = $form.find('input').map(function () {
            if ($(this).is('[name="MEDRIN"]')) {
                return 'The medical was received on ' + $(this).val();
            } else {
                return $(this).val(); 
            }
         }).get();
    
        /* Join our values array and set it as our paragraph element's text. */
        $paragraph.text(mapped_values.join(', '));
    
        /* Return our (jQuery-wrapped) paragraph element. */
        return $paragraph;
    }
    
  7. 我删除了输入ID并用名称属性替换它们,因为不应该重复ID。此外,datepicker导致克隆表单出现问题,所以我改变了一些东西以使一切正常。您可以在http://jsfiddle.net/76484/qLeg5wm9/

    看到我的结果