提供"Social Network"岗位的流逝时间



jsfiddle。

我创建了一个小的JavaScript片段,可以使用两个输入并使用这些输入来制作一种"帖子"。在这些帖子中,它说了类似:

嗨!

由随机人_几分钟前发布。

但是没有下划线,应该说从现在到发布的时间之间的时间。我很难考虑如何做到这一点,但这是我目前正在使用的:

$('#b').click(function () {
    var v = $('#type').val();
    var u = $('#input').val();
    if (v !== "" && u !== "") {
        var time = new Date();
        var currentime = Date.now();
        var x = currentime - time;
        $("ul").prepend("<li>" + v + "<br />Posted by " + u + " " + x + " minutes ago  </li>");
        $('#type, #input').css('border', '');
    } else if (v == "" && u == "") {
        $('#type, #input').css('border', '1px solid red');
    } else if (v == "") {
        $('#type').css('border', '1px solid red');
        $('#input').css('border', '');
    } else {
        $('#input').css('border', '1px solid red');
        $('#type').css('border', '');
    }
});
#type, #input {
    border-radius: 10px;
    background: #dadae3;
    color: #59ACFF;
    border: 1px solid #dadae3;
}
#type {
    border-bottom-right-radius: 0;
}
#type:hover, #input:hover {
    background: #c4c4cc;
    color: #488CCF;
    border: 1px solid #c4c4cc;
}
#type:hover::-webkit-input-placeholder {
    color: #59ACFF
}
#input:hover::-webkit-input-placeholder {
    color: #59ACFF
}
#type:focus, #input:focus {
    border: 1px solid #59ACFF;
    outline: 0;
}
button {
    height: 30px;
    background: #dadae3;
    border-radius: 10px;
    border: 1px solid #dadae3;
    color: #59ACFF;
    cursor: pointer;
}
button:hover {
    background: #c4c4cc;
    color: #488CCF;
    border: 1px solid #c4c4cc;
}
button:focus {
    outline: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"/>
<br />
<textarea id='type'></textarea>
<br />
<br />
<input id='input'>
<br />
<br />
<button id='b'><span class='fa fa-plus-square-o fa-2x'></span>
</button>
<ul id='ul'></ul>

我意识到这是错误的,但是我想不出其他方法来做到这一点。我也希望每分钟更新的时间更新。

谢谢。:)

这是我的实现。每10秒调用updatePost函数以更新帖子中的时间。还对代码进行了稍作调整(消除重复的$('#type, #input').css('border', '');等)。

记住打开您的Web控制台以查看调试输出。

这也可以在JSfiddle上找到。

更新:

  1. 在马丁的建议下分离setInterval功能。
  2. 新示例现在利用data属性。

// Update the posts every 10 seconds
setInterval(function () {
    console.log('Updating posts...');
    $('ul .time').each(function (id, span) {
        time = Math.round((new Date() - $(span).data('timestamp')) / 60000);
        $(span).text(time);
    });
}, 10000);
$('#b').click(function () {
    var v = $('#type').val();
    var u = $('#input').val();
    $('#type, #input').css('border', '');
    if (v !== "" && u !== "") {
        // Generate a timestamp for every post
        var timestamp = Date.now();
        $("ul").prepend('<li>' +
            '<span class="body">' + v + '</span><br />' +
            'Posted by ' +
            '<span class="author">' + u + '</span> ' +
            '<span class="time" data-timestamp="' + timestamp + '">0</span>' +
            ' minutes ago  </li>');
    } else {
        if (v == "") {
            $('#type').css('border', '1px solid red');
        }
        if (u == "") {
            $('#input').css('border', '1px solid red');
        }
    }
});
#type,
#input {
  border-radius: 10px;
  background: #dadae3;
  color: #59ACFF;
  border: 1px solid #dadae3;
}
#type {
  border-bottom-right-radius: 0;
}
#type:hover,
#input:hover {
  background: #c4c4cc;
  color: #488CCF;
  border: 1px solid #c4c4cc;
}
#type:hover::-webkit-input-placeholder {
  color: #59ACFF
}
#input:hover::-webkit-input-placeholder {
  color: #59ACFF
}
#type:focus,
#input:focus {
  border: 1px solid #59ACFF;
  outline: 0;
}
button {
  height: 30px;
  background: #dadae3;
  border-radius: 10px;
  border: 1px solid #dadae3;
  color: #59ACFF;
  cursor: pointer;
}
button:hover {
  background: #c4c4cc;
  color: #488CCF;
  border: 1px solid #c4c4cc;
}
button:focus {
  outline: 0;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<br />
<textarea id='type'></textarea>
<br />
<br />
<input id='input'>
<br />
<br />
<button id='b'><span class='fa fa-plus-square-o fa-2x'></span>
</button>
<ul id='ul'></ul>

ps:还应实现诸如区分"分钟"one_answers"分钟"之类的增强功能。

对您的代码的微小修改如何?

诀窍是将自定义参数存储在跨越时间,然后定期更新。

$('#b').click(function () {
    var v = $('#type').val();
    var u = $('#input').val();
    if (v !== "" && u !== "") {
        $("ul").prepend("<li>" + v + "<br />Posted by " + u + " <span posted=""+ currentime + "">0</span> minutes ago  </li>");
        $('#type, #input').css('border', '');
    } else if (v == "" && u == "") {
        $('#type, #input').css('border', '1px solid red');
    } else if (v == "") {
        $('#type').css('border', '1px solid red');
        $('#input').css('border', '');
    } else {
        $('#input').css('border', '1px solid red');
        $('#type').css('border', '');
    }
});
setInterval(function() {
    $('ul span').each(function(id, span) {
        time = Math.round((new Date() - $(span).attr('posted')) / 60000);
        $(span).text(time);
    });
}, 5000);
#type, #input {
    border-radius: 10px;
    background: #dadae3;
    color: #59ACFF;
    border: 1px solid #dadae3;
}
#type {
    border-bottom-right-radius: 0;
}
#type:hover, #input:hover {
    background: #c4c4cc;
    color: #488CCF;
    border: 1px solid #c4c4cc;
}
#type:hover::-webkit-input-placeholder {
    color: #59ACFF
}
#input:hover::-webkit-input-placeholder {
    color: #59ACFF
}
#type:focus, #input:focus {
    border: 1px solid #59ACFF;
    outline: 0;
}
button {
    height: 30px;
    background: #dadae3;
    border-radius: 10px;
    border: 1px solid #dadae3;
    color: #59ACFF;
    cursor: pointer;
}
button:hover {
    background: #c4c4cc;
    color: #488CCF;
    border: 1px solid #c4c4cc;
}
button:focus {
    outline: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"/>
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"/>
<br />
<textarea id='type'></textarea>
<br />
<br />
<input id='input'>
<br />
<br />
<button id='b'><span class='fa fa-plus-square-o fa-2x'></span>
</button>
<ul id='ul'></ul>

最新更新