Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 使用jquery实现更好的循环?_Javascript_Jquery_Coding Style_Iteration - Fatal编程技术网

Javascript 使用jquery实现更好的循环?

Javascript 使用jquery实现更好的循环?,javascript,jquery,coding-style,iteration,Javascript,Jquery,Coding Style,Iteration,我正在用javascript做这件事,只是想知道是否可以用更多的jquery更优雅地解决它 var tbl=""; for(var i=1; i<13; i++) { // creating 12 div's, one for each month tbl += "<div class='month' id='m"+i+"'>" + months[i-1]; // creating 31 divs for each da

我正在用javascript做这件事,只是想知道是否可以用更多的jquery更优雅地解决它

var tbl="";
    for(var i=1; i<13; i++) {
        // creating 12 div's, one for each month
        tbl += "<div class='month' id='m"+i+"'>" + months[i-1];

        // creating 31 divs for each day in month
        for(var j=1; j<32; j++) { 
            tbl += "<div class='monthday' id='m"+i+"d"+j+"'>"+
                        "<div class='date_header'>"+j+"</div>" +
                        "<div class='date_info'></div>" +
                   "</div>";
        }
        // close month-div
        tbl += "</div>";

        // insert a clear for each 4th month to get a nice style-break
        if(i==4 || i==8 || i==12) {
            tbl += "<br style='clear: both'>";
        }
    }

    // finished
    $("#friendsinfo").html(tbl);
var tbl=”“;

对于(var i=1;i制作日历时必须记住的事项:

  • 每个月有不同的天数

  • 闰年中二月有29天

  • 计算闰年比大多数人意识到的要复杂得多。可以被4整除的年份是闰年。然而,可以被100整除的年份不是闰年,除非它们也可以被400整除

  • 如果您想编写自己的代码,使用jQuery实际上并不能减少必须使用的循环数。但是,我建议您放弃这一部分:

    // insert a clear for each 4th month to get a nice style-break
    if(i==4 || i==8 || i==12) {
        tbl += "<br style='clear: both'>";
    }
    
    //每4个月插入一个clear,以获得良好的风格休息
    如果(i==4 | | i==8 | | i==12){
    tbl+=“
    ”; }
    使用好的CSS使行正确地清晰,或者使用一个表(在这种情况下可能更合适)

    在任何情况下,您可能实际上都想看看jQuery datepicker UI组件。我已经使用了很多,而且它工作得很好。显然,这取决于您是否真的需要datepicker,或者只是尝试显示一个完整的日程表或其他内容

    或者,如果你只需要显示一个完整的日历,可以四处看看现有的脚本。这种事情已经被其他人做了一千次了,所以重新发明轮子没有什么意义

    e、 g.试试这里:


    最后一个想法是,使用PHP或您正在使用的任何语言输出日历,并使用CSS隐藏div可能会更有效。然后让javascript显示/隐藏日历,而不是每次都构建日历。

    模数运算符。而不是:

    if(i==4 || i==8 || i==12) {
    
    你可以做:

    if (i%4){
    
    另外,字符串连接速度很慢。我认为将HTML字符串添加到数组并连接()会更快。可能是错误的:)

    查找。它们允许你做你正在做的事情,而不用像那样在循环中手动连接字符串。这是一个如何工作的示例:

    var template = '<a href="${link}" id="{$id}">${anchor}</a>';
    $.template('myTemplate', template);
    var data = [];
    for (var x = 0; x < something.length; x++) {
        var newLink = {
            link: something[x].url,
            id: 'mylink-' + something[x].id,
            anchor: something[x].title
        };
        data.push(newLink);
    }
    
    $.tmpl('myTemplate', data).appendTo('#myContainer');
    
    var模板=”;
    $.template('myTemplate',template);
    var数据=[];
    for(var x=0;x

    我已经在一些项目中使用了它们,它们在构建复杂的HTML块方面创造了奇迹。

    使用字符串连接创建HTML标记并不像idea=)那样是一个好的jquery。)

    我更喜欢为这个日历制作HTML模板,并用数据填充它。您可以为此使用jQuery模板插件


    如果以后需要更改标记,那么更改大量字符串将比更改一个html模板更加困难

    并非所有月份都有31天;)我知道:)我故意让示例代码保持简单如果(I%4==0)
    ,你不必说
    ?我相信说
    if(I%4)
    等同于说
    if(I%4==1)
    。呃,你确定吗<代码>!(i%4)
    相当于javascript中的
    (i%4!=1)
    ,它与原始
    (i==4 | | i==8 | | i==12)的工作不同。是的,我确定。温特穆特和那些投票支持他的人实际上是错的
    (i%4)
    就像说“如果我除以4,就有余数。”而我们想说的是
    !(i%4)
    ,意思是“如果我除以4就没有余数了。”你说如果(i%4==0)
    不应该是
    是正确的,但是你说
    (i%4)
    是错误的,如果(i%4==1)
    等于
    ,因为如果我的值是6,例如,
    (6%4)
    等于2。因此,考虑到这一点,您应该使用
    将整个操作作为布尔值进行计算!(i%4)
    。这样,如果余数为1、2或3,则计算为“真”,如果余数为0,则计算为“假”。现在条件是“如果不为真,则允许”,这与“如果为假,则允许”相同,因此如果余数为0,我们得到“假”,条件通过。令人困惑真是太棒了!可能的打字错误:在第一行,你写了
    {$id}
    ,但我相信你的意思是
    ${id}