想知道为什么我的JQuery数组循环没有正确设置我的href

时间:2015-11-14 05:24:26

标签: javascript jquery html arrays checkbox

让我告诉你我在做什么。这是我正在做的一些功课,现在已经卡住了。我正在创建一个页面,您可以从一堆不同的复选框中进行选择。根据复选框,您可以单击我已编程的“显示资源”按钮,打开一个带有相应复选框的新窗口以显示其值,它们的值也是这些特定资源的URL。听起来很容易吗?这是事物的基本结构。

//this is the main function that is making an array of the checked check boxes and displying them on the new window, problem is I am only able to set the href attibute to only the first array item...
$(function() {
    $(":checkbox").change(function() {
      var arr = $(":checkbox:checked").map(function() { return $(this).val(); }).get();
            $("#messagepop").html('<a id="resourceLink">' + arr.join('</a><br><a id="resourceLink">') + '</a>');
      for (var i = 0; i < arr.length; i++){
        $("#resourceLink").attr('href', arr[i]);
      }
    });
  });

//these are functions for the new window
  function deselect(e) {
  $('.pop').slideFadeToggle(function() {
    e.removeClass('selected');
  });    
  }

  $(function() {
    $('#contact').on('click', function() {
      if($(this).hasClass('selected')) {
        deselect($(this));               
      } else {
        $(this).addClass('selected');
        $('.pop').slideFadeToggle();
      }
      return false;
    });

    $('.close').on('click', function() {
      deselect($('#contact'));
      return false;
    });
  });

  $.fn.slideFadeToggle = function(easing, callback) {
    return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback);
  };
.messagepop {
  background-color:#FFFFFF;
  border:1px solid #999999;
  cursor:default;
  display:none;
  margin-top: 15px;
  position:absolute;
  text-align:left;
  width:394px;
  z-index:50;
  padding: 25px 25px 20px;
}

label {
  display: block;
  margin-bottom: 3px;
  padding-left: 15px;
  text-indent: -15px;
}

.messagepop p, .messagepop.div {
  border-bottom: 1px solid #EFEFEF;
  margin: 8px 0;
  padding-bottom: 8px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="slide4">
    <h1>Resources</h1>
    <p>(Select the resources you wish to receive information about. Click on the "Show Resources" button when you are ready)</p>
    <form action="">
      <input type="checkbox" value="https://google.com/search?q=CareerPreparation">Career Preparation<br>
      <input type="checkbox" value="https://google.com/search?q=CollegeAdvising">College Advising<br>
      <input type="checkbox" value="https://www.google.com/search?q=financial+aid">Financial Aid<br>
      <input type="checkbox" value="https://www.google.com/search?q=fitness+recreation">Fitness & Recreation<br>
      <input type="checkbox" value="https://www.google.com/search?q=health+services">Health Services<br>
      <input type="checkbox" value="https://www.google.com/search?q=housing">Housing<br>
      <input type="checkbox" value="https://www.google.com/search?q=library">Library<br>
      <input type="checkbox" value="https://www.google.com/search?q=parking">Parking<br>
      <input type="checkbox" value="https://www.google.com/search?q=housing">Scholarships<br>
      <input type="checkbox" value="https://www.google.com/search?q=student+employment">Student Employment<br>
      <input type="checkbox" value="https://www.google.com/search?q=student+organization">Student Organizations<br>
      <input type="checkbox" value="https://www.google.com/search?q=tutoring">Tutoring Support<br>
      <input type="checkbox" value="https://www.google.com/search?q=writing">Writing Support<br>
    </form>

   
<div class="messagepop pop">
  <p><a class="close" href="/">Close</a></p>
  <div id="messagepop" >
    
  </div>
</div>

<a href="/contact" id="contact">Show Resources</a>

</div>

所以我遇到的问题是我无法在新div窗口中显示的新<a>标记上正确设置href属性。所有这些的关键是我必须使用选中的复选框创建一个数组,并将它们链接到适当的资源。

所以真正的问题是,我错过了什么?我可以看到数组有正确的元素链接,所以为什么它们没有显示在其余的显示元素上。希望这是有道理的,请告诉我,如果我在这里向您展示的内容令人困惑,或者我需要澄清,谢谢!

2 个答案:

答案 0 :(得分:1)

您正在为多个元素设置相同的ID,这是一个SIN。

      $("#messagepop").html('<a class="resourceLink">' + arr.join('</a><br><a    class="resourceLink">') + '</a>');

      for (var i = 0; i < arr.length; i++){
        $(".resourceLink").eq(i).attr('href', arr[i]);
      }

答案 1 :(得分:0)

根本不需要使用id - 至少在显示的代码中没有。

&#13;
&#13;
$(":checkbox").change(function() {
      var messagepop = $("#messagepop");

      // remove all child nodes
      messagepop.empty();

      // add the checked items as anchor tags
      $(":checkbox:checked").each(function() {
          var val = $(this).val();

          $('<a />')
              .attr("href", val)
              .text(val)
              .appendTo(messagepop);
      });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="slide4">
  <h1>Resources</h1>

  <p>(Select the resources you wish to receive information about. Click on the "Show Resources" button when you are ready)</p>
  <form action="">
    <input type="checkbox" value="https://google.com/search?q=CareerPreparation">Career Preparation
    <br>
    <input type="checkbox" value="https://google.com/search?q=CollegeAdvising">College Advising
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=financial+aid">Financial Aid
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=fitness+recreation">Fitness & Recreation
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=health+services">Health Services
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=housing">Housing
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=library">Library
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=parking">Parking
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=housing">Scholarships
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=student+employment">Student Employment
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=student+organization">Student Organizations
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=tutoring">Tutoring Support
    <br>
    <input type="checkbox" value="https://www.google.com/search?q=writing">Writing Support
    <br>
  </form>
</div>
<div class="messagepop pop">
  <div id="messagepop"></div>
</div>
&#13;
&#13;
&#13;