(HTML / JS)添加“,“在第二个最后一个字串和隐藏"&"如果字符串中有一个单词

[HTML/JS]Adding "&" before the second last word of string and hiding "&" if there is a single word in that string

本文关键字:quot 隐藏 如果 单词 有一个 字符串 JS HTML 添加 最后一个 第二个      更新时间:2023-09-26

我在一个网站的UI部分(HTML和JS)工作。其中,有一个选择4种不同类型产品的表。现在,我想在页面的末尾显示一个摘要。如果用户选择了Type-1的产品,则显示summary为(Type-1);如果选择了Type-1、Type-2、Type-3的产品,则显示summary为(Type-1、Type-2 &类型3),或者如果选择了类型2和类型4的产品,则显示(类型2 &类型4)。如何决定何时添加 &以及何时不添加取决于所选产品的数量,并在每个产品类型之后添加逗号,但如果只选择一个产品或只选择两个产品,则不添加 ?每个产品都在一个单独的下拉列表中列出,我在javascript中使用每个下拉列表的onchange()调用方法来知道选择了哪个产品。

jsfield

<input type="checkbox" value="Type 1" id="type_1" onchange="setType();" /> Type 1<br />
<input type="checkbox" value="Type 2" id="type_2" onchange="setType();" /> Type 2<br />
<input type="checkbox" value="Type 3" id="type_3" onchange="setType();" /> Type 3<br />
<input type="checkbox" value="Type 4" id="type_4" onchange="setType();" /> Type 4<br />
<textarea id="types"></textarea>  

JS

function setType() {
    var types = [];
    for ( var i = 1; i <= 4; i++ ) {
        var input = document.getElementById( "type_" + i );
        if ( input.checked ) {
            types.push( input.value );
        }
    }
    var textarea = document.getElementById( "types" );
    types = types.join( ", " );
    var index = types.lastIndexOf( "," );
    types = types.split( "" );
    types[ index ] = " &";
    types = types.join( "" );
    textarea.value = types;
}

注:我不喜欢substr

如果您正在使用JavaScript,并且有逗号分隔的产品列表可用,则可以简单地替换最后一个逗号。

var summary = '(Type-1, Type-2, Type-3)'; 
var i = summary.lastIndexOf(',');
if(i > -1){
   var summary = summary.substr(0,i) + ' &' + summary.substr(i+1);
}
console.log(summary);

虽然我建议使用&amp;而不是文字&,如果你插入到文档

如果产品在数组中,则可以使用以下代码:

var myStringArray = [ "Type-1", "Type-2", "Type-3", "Type-4" ];
var arrayLength = myStringArray.length;
var string = myStringArray[0];
for (var i = 1; i < arrayLength - 1; i++) {
    string += ", " + myStringArray[i];
}
string += " & " + myStringArray[myStringArray.length - 1];

字符串结果将是:Type-1, Type-2, Type-3 &类型4。

你可以这样做

function addPunctuationToList (items) {
    return items.length > 2 ? items.slice(0,-1).join(', ') + ' & ' + items.slice(-1) : items.join(' & ');
}
addPunctuationToList(['Type-1', 'Type-2', 'Type-3', 'Type-4']); // returns "Type-1, Type-2, Type-3 & Type-4"
addPunctuationToList(['Type-1', 'Type-2', 'Type-3']); // returns "Type-1, Type-2 & Type-3"
addPunctuationToList(['Type-1', 'Type-2']); // returns "Type-1 & Type-2"
addPunctuationToList(['Type-1']); // returns "Type-1"

要构建items数组,您可以这样做

var items = [];
$('select').each(function (index, element) {
    if (element.value) items.push(element.value);
});
addPunctuationToList(items);

更新2

这里有一个我认为你正在寻找的工作示例http://jsfiddle.net/icodeforlove/ex2zh/4/