随机选择页面中的单词,并在JS按钮单击时将其变为斜体

时间:2016-05-09 18:16:58

标签: javascript jquery random typography italic

我想创建一个javascript按钮,当点击它时,在文本中随机拼写一堆单词 - 比如200。这意味着只有某些单词应该是斜体,但每次都是不同的(不论其功能或性质 - 动词,名词,子流,介词等)。

我正在考虑调用一个数组,然后得到“str.italics()”,但这意味着我必须有条不紊地将该文本的所有单词复制到代码中,对吧?而且它似乎是非标准的。我确信有更好的方法可以做到这一点。

感谢。

1 个答案:

答案 0 :(得分:3)

这将随机将斜体添加到div中的单词。它使用0到[字数]数字的随机数组来确定哪些单词应在主文本中用斜体表示。

调整numWordsToItalicize以更改斜体应用的字数。

Fiddle

<强>的Javascript

var words = $('#words');
var initialText = words.html();

function italics(){  
  var wordArr = initialText.split(' ');  
  var randomArray = getRandomArray(wordArr.length);
  numWordsToItalicize = 100; 

  for(var i = 0; i < numWordsToItalicize && i < wordArr.length; i++) {
    wordArr[randomArray[i]] = '<span class="italic">' + wordArr[randomArray[i]] + '</span>';    
  }  
  words.html(wordArr.join(' '));
}

function getRandomArray(length) {
  var arr = [];
  for(var i = 0; i < length; i++) { arr.push(i); }
  return shuffleArray(arr);
}

function shuffleArray(array) {
  for (var i = array.length - 1; i > 0; i--) {
    var j = Math.floor(Math.random() * (i + 1));
    var temp = array[i];
    array[i] = array[j];
    array[j] = temp;
  }
  return array;
}

$('#doItalics').on('click', function(){
  italics();
});

<强> HTML

<input id="doItalics" type="button" value="Italicize!" />
<div id="words">
  A large amount of text...
</div>

<强> CSS

.italic {
  font-style: italic;
}