0

我想编写一个(Javascript?)函数以包含在 HTML 页面中,该函数允许我呈现标记kbd为由“+”分隔的函数参数,并且能够接受任意数量的输入参数。

因此,例如,将fnRenderKBD(Ctrl+X, Y, Z)呈现为Ctrl+X++ YZ

重要的是该函数应该能够接受可变数量的参数。

是否可以编写这样的函数(如果可以,如何编写)?我对JS几乎一无所知。

4

1 回答 1

3

我在底部的答案不是我写过的最好的东西。更好的解决方案如下所示:

function fnRenderKBD(elem, keysToDisplay) {
    var delimiter = '';
    var content = null;
    for(var i = 0, length = keysToDisplay.length; i < length; i++) {
        var renderedKey = document.createElement('kbd');
        renderedKey = setText(renderedKey, keysToDisplay[i]);

        if (i > 0) {
            elem.appendChild(document.createTextNode('+'));
        }

        elem.appendChild(renderedKey);
    }
}

function setText(elem, text) {
   if (elem.textContent){
      elem.textContent = text;
   }else{
      elem.innerText = text;
   }

   return elem;
}

(function() {
    var keys = [
        'Ctrl+X',
        'Y',
        'Z'
    ];

    var elem = document.getElementById('display');

    fnRenderKBD(elem, keys);
}());​

演示:http: //jsfiddle.net/wPg7z/


像这样的东西应该工作:

function fnRenderKBD(elem, keysToDisplay)
{
    var delimiter = '';
    var content = '';
    for(var i = 0, length = keysToDisplay.length; i < length; i++) {
        content+= delimiter + '<kbd>' + keysToDisplay[i] + '</kbd>';
        delimiter = '+';
    }

    elem.innerHTML = content;
}

(function() {
    var keys = [
        'Ctrl+X',
        'Y',
        'Z'
    ];

    var elem = document.getElementById('display');

    fnRenderKBD(elem, keys);
})();
​

演示:http: //jsfiddle.net/gTYxP/1/

于 2012-08-27T01:50:33.773 回答