首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将一串数字截断到一定长度

将一串数字截断到一定长度
EN

Stack Overflow用户
提问于 2009-08-25 23:57:29
回答 3查看 595关注 0票数 1

我有下面的jquery代码,它返回一个ID列表,比如1|2|3|4|5|6|7|8|9等等,对于页面上的每个列表项,我还有一个名为topfriendNumber的下拉选择框。我需要从topfriendNumber下拉框中获取值,并确保我的it列表不超过它。

因此,如果下拉列表被选择为4,那么它应该只允许4个数字1|2|3|4

基于下面的代码,你能帮上忙吗?

这可能会添加到底部,因为它已经使用了下拉框中的数字

代码语言:javascript
运行
复制
<select name="topfriendNumber" id="topfriendNumber">
    <option value="3">3</option>
    <option value="6" selected="selected">6</option>
    <option value="9">9</option>
    <option value="12">12</option>
</select>

<script>
    function saveOrder() {
        var serialStr = "";
        $("#topfriends li").each(function (i, elm) {
            serialStr += (i > 0 ? "|" : "") + $(elm).attr("friendID");
        });
        // alert(serialStr);   //1|2|3|4|5|6|7|8|9
        $('select[name=topfriendNumber]').change();
        $.ajax({
            url: "exampe.php/SaveListOrder",
            data: '{"ids":"' + serialStr + '"}',
            dataType: "json",
            type: "POST",
            contentType: "application/json; charset=utf-8"
        });
    };

    //changes the background colors depending on the amount selected from the dropdown list
    $('select[name=topfriendNumber]').change(function () {
        var val = $(this).val();
        //reset style
        $('ul#topfriends > li').css("background-color", "");
        //apply to all LIs before value of select
        $('ul#topfriends > li:lt(' + val + ')').css("background-color", "red");
    }).change();
</script>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-08-26 00:13:01

为什么不停下来,甚至不生成超出您需要的列表呢?

代码语言:javascript
运行
复制
var needed = $('select[name=topfriendNumber]').val();
$("#topfriends li").each(function (i, elm) {
    serialStr += (i > 0 ? "|" : "") + $(elm).attr("friendID");
    if (i > needed) {
        return false;
    }
});
票数 3
EN

Stack Overflow用户

发布于 2009-08-26 00:11:57

我建议先使用数组来存储订单:

代码语言:javascript
运行
复制
function saveOrder() {
    var serials = []; // create an empty array
    $("#topfriends li").each(function (i, elm) {
        serials.push( $(elm).attr("friendID") ); // add Friend ID
    });

    // quick way to get your old format string
    // alert(serials.join("|"));   //returns: 1|2|3|4|5|6|7|8|9

    // assuming this is where that "number" is. 
    var $numberSelect = $('select[name=topfriendNumber]');

    var numOfFriends = parseInt($numberSelect.val(),10); // get the value
    if (serials.length<numOfFriends) numOfFriends = serials.length;

    // get an array from 0, numofFriends in length.
    var serialStr = serials.slice(0, numOfFriends).join("|");
    // 1|2|3|4 if numOfFriends is 4.

    // ....
};

如果你是从一个字符串开始:

代码语言:javascript
运行
复制
 function getListItems(listStr, length) {
   var parts = listStr.split("|"); // split the string up into an array.
   if (!length || (parts.length<length)) return parts.join("|");
   return parts.splice(0,length).join("|");
 }

 alert(getListItems("1|2|3|4|5|6|7|8|9", 4)); // 1|2|3|4

VoteyDisciple的回答提出了一个很好的观点--你并不真的需要所有的朋友ID。

代码语言:javascript
运行
复制
function saveOrder() {
    // assuming this is where that "number" is. 
    var $numberSelect = $('select[name=topfriendNumber]');
    var numOfFriends = parseInt($numberSelect.val(),10); // get the value

    var serials = []; // create an empty array
    $("#topfriends li").slice(0,numOfFriends).each(function (i, elm) {
        serials.push( $(elm).attr("friendID") ); // add Friend ID
    });

    var serialStr = serials.join("|");
    //....
 }
票数 1
EN

Stack Overflow用户

发布于 2009-08-26 00:11:01

代码语言:javascript
运行
复制
var newSerialStr = serialStr.split('|').splice(0,topfriendNumber).join('|');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1331644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档