是否可以生成所有表情符号并附加到选择下拉列表?

时间:2016-10-05 10:47:45

标签: javascript jquery emoji

是否有任何可能的方法生成所有表情符号并使用JavaScript将其附加到单个选择下拉列表?或者我必须手动输入每个?

<select>
    <option></option>
    <option></option>
<select>

<script>
function()
{
    // How do I put all the emojis into the select dropdown..?
}
</script>

3 个答案:

答案 0 :(得分:8)

您可以定义不同表情符号范围的开始和结束值。然后,您可以循环遍历每个范围并将表情符号附加到选项标记。

var mySelect = document.getElementById('mySelect')
var newOption;
var emojRange = [
  [128513, 128591], [9986, 10160], [128640, 128704]
];
//inside emojRange 2d array , define range arrays (start number,end number).
//1st array : Emoticons icons
//2nd range : Dingbats.
//3rd range : Transport and map symbols
for (var i = 0; i < emojRange.length; i++) {
  var range = emojRange[i];
  for (var x = range[0]; x < range[1]; x++) {

    newOption = document.createElement('option');
    newOption.value = x;
    newOption.innerHTML = "&#" + x + ";";
    mySelect.appendChild(newOption);
  }

}

我从此网站获取了十六进制范围:http://apps.timwhitlock.info/emoji/tables/unicode

var mySelect = document.getElementById('mySelect')
var newOption;
var emojRange = [
  [128513, 128591] ,[9986,10160],[128640,128704]
];
//inside array define range arrays.
//1st array : Emoticons icons
//2nd range : Dingbats.
//3rd range : Transport and map symbols
for (var i = 0; i < emojRange.length; i++) {
  var range = emojRange[i];
  for (var x = range[0]; x < range[1]; x++) {

    newOption = document.createElement('option');
    newOption.value = x;
    newOption.innerHTML = "&#" + x + ";";
    mySelect.appendChild(newOption);
  }

}
option {
  font-size:50px;
}
<select id="mySelect">
</select>

答案 1 :(得分:4)

我从Full Emoji Data, v3.0下载了字符并将它们放在JavaScript library hosted in Github下,在非授权下发布。

使用它可以编写如下代码:

var target = document.getElementById("target");
var emojiCount = emoji.length;

for(var index = 0; index < emojiCount; index++)
{
  addEmoji(emoji[index]);
}

function addEmoji(code)
{
  var option = document.createElement('option');
  option.innerHTML =  code;
  target.appendChild(option);
}
<script src="https://rawgit.com/theraot/emoji/master/emoji.js" charset="utf-8"></script>
<select id ="target">
<select>

您可以使用JavaScript将列表过滤为只有那些没有修饰符的表情符号。

我将复制我在Github为该项目编写的README:

表情符号

JavaScript的所有表情符号列表

使用如下:

<script src="https://rawgit.com/theraot/emoji/master/emoji.js" charset="utf-8"></script>

表情符号列表是从Full Emoji Data, v3.0

中检索到的

注1:某些表情符号由两个Unicode字符组成。这些是使用表情符号修饰符,可能无法正确呈现。

注2:支持可能因浏览器和平台而异,平台也不同,建议使用表情符号字体。

答案 2 :(得分:1)

如果您的表情符号是unicode字符,请将它们全部放入数组中并循环以构建您的选择下拉列表,如下所示:

var myEmojis = ['&#9786', '&#9785']; //put all your emojis in this array
var selectOptions = "<option>select</option>";
for(var i = 0; i < myEmojis.length; i++){
  selectOptions += "<option>" + myEmojis[i] + "</option>"
}
$('select').html(selectOptions);