将ID_x与ID_x匹配或使用+ i在id' s中循环

时间:2015-01-17 01:27:08

标签: javascript php jquery mysql json

我希望沿着这些方向做点什么,但一直陷入困境。

基本上我有一个for循环



$(document).ready(function() {
  var foo = function() {

    for (var i = 0; i < 10; i++) {

      $('#event_').attr('id', 'event_' + i);
      $('#unformatted_').attr('id', 'unformatted_' + i);
      $('#formatted_').attr('id', 'formatted_', +i);

    }

  };

  /* formatting date and time (from sql YYYY-MM-DD HH:MM:SS.0000 - need DD-MM-YYYY HH:MM:SS  */

  /* this is where i want to do something like #unformatted + i to cycle through each span with #unformatted_ (1,2,3,4 etc), grab the html (the date and time), format them, and display them in #formatted_ (1,2,3,4 etc) but with the corresponding one of course*/

  var startdate = $('#unformatted_').html();
  var subyear = (startdate).substr(0, 4);
  var submonth = (startdate).substr(5, 2);
  var subday = (startdate).substr(8, 2);
  var starttime = (startdate).substr(11, 8);
  var subfull = (subday + "-" + submonth + "-" + subyear);
  $('#formatted_').html(subfull + " " + starttime);


});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="event_">
  <th>Table Header</th>
  <tr>
    <td>
      <span id="unformatted_">" . $row["date"]. " " . $row["time"]. "</span>
      <span id="formatted_"></span>
    </td>
  </tr>
</table>
<table id="event_">
  <th>Table Header</th>
  <tr>
    <td>
      <span id="unformatted_">" . $row["date"]. " " . $row["time"]. "</span>
      <span id="formatted_"></span>
    </td>
  </tr>
</table>
<table id="event_">
  <th>Table Header</th>
  <tr>
    <td>
      <span id="unformatted_">" . $row["date"]. " " . $row["time"]. "</span>
      <span id="formatted_"></span>
    </td>
  </tr>
</table>
&#13;
&#13;
&#13;

每个#event_,#unittted_和#formatted_都会得到一个放在最后的数字。因此表1中的所有三个ID都具有_1,表2中有_2。

然后我需要在#unformatted_中获取文本输出(来自SQL表的日期,用php回显,思考日历或议程),一旦由变量抓取substr格式化,它需要显示在#formatted_中。目前我只能获得第一个表(#event_1)来显示#formamed_1文本,其中#formast_2的#eforma_2部分为空(依此类推)。

我已经将#formamed_1显示在#forman_2和#formatted_3中,但我似乎无法获得

#event_1 -> #unformatted_1 -> #formatted_1
#even_2 -> #unformatted_2 -> #formatted_2
..so on and so forth.

如果您运行该代码段,您会看到我在说什么。

我非常业余,所以任何帮助都将非常感谢! PS。在阅读有关解决我的问题的方法时,我已经看到很多关于JSON&amp; amp; AJAX,我应该使用这些吗?

我所建立的网站基本上是一个活动网站。所以说它是一个喜剧俱乐部。用户访问该站点,查看自定义构建的日历(每个节目的sql数据库,通过php回显行),每个月都是它自己的.php(即jan.php)。我需要添加addthisevent.com将此事件按钮添加到每个日历条目,以便用户可以轻松添加到Google cal或ical。如果你知道一个更简单的方法,我全都耳朵!或者如果这是一个简单的方法来创建一个可以被所有google cal,ical等读取的XML文件,这些文件可以通过用户点击链接启动,我也是所有的人。

任何帮助将不胜感激。我就像在海洋中间没有翅膀的鸟一样陷入困境。

1 个答案:

答案 0 :(得分:1)

将您的所有范围都设为class="unformatted"class="formatted",而不是ID。循环遍历获取每个元素的html(日期)的所有unformatted元素,重新格式化它,然后使用jQuery的eq()将修改后的文本设置为匹配的formatted元素

// give all your spans, classes `class="unformatted"` and `class="formatted"`
// loop through all of the `unformatted` elements

$('.unformatted').each(function(index, element){ 
      // use a regular expression to get an array of the different date parts
      // then rearrange them
      if($(element).html().match(/\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d/)){
       var dateParts= $(element).html().match(/(\d{4})-(\d\d)-(\d\d)\s(\d\d:\d\d:\d\d)/);
        // dateParts will now be an array with 4 items --> [YYYY, MM, DD, HH:MM:SS]
        // use jquery's `eq()` to set the modified text 
        // to the matching `formatted` element
        
       $('.formatted:eq('+index+')').html( dateParts[3]+'-'+
                                           dateParts[2]+'-'+
                                           dateParts[1]+' '+
                                           dateParts[4]    );
     }
});
.formatted{
    
  margin-left:20px;
  color:green;    
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table >
  <th>Table Header</th>
  <tr>
    <td>
      <span class="unformatted">1983-12-22 06:22:25.0000</span>
      <span class="formatted"></span>
    </td>
  </tr>
</table>
<table >
  <th>Table Header</th>
  <tr>
    <td>
      <span class="unformatted">1943-06-15 12:22:14.0000</span>
      <span class="formatted"></span>
    </td>
  </tr>
</table>
<table >
  <th>Table Header</th>
  <tr>
    <td>
      <span class="unformatted">1999-12-04 02:22:27.0000</span>
      <span class="formatted"></span>
    </td>
  </tr>
</table>