我在根据用户输入拆分数组时遇到了一些问题。我有一个文本区域,用户将在其中输入一篇文章和一个输入框,其中一个人可以输入一个作为分割基础的数字。假设用户输入“3”,整篇文章将分为每段3个句子。
到目前为止我有这个HTML,
<textarea id="essay"></textarea>
<input type="text" onkeypress="return show_paragraph(event)" id="input" />
<div id="questionDiv"></div>
和一个完成所有功能的功能。但是切片只适用于第一段,意思是,如果我输入一篇由8个句子组成的文章,我想在每3个句子中切片,例如,我只得到两段,第一段有3个句子,第二段有5个句子,我应该有3个段落,3-3-2个句子..
function show_paragraph(e){
var numSentences = $("#input").val();
var essay= $("#essay").val();
if (e.keyCode == 13 || e.which == 13) {
var sentence_list = essay.split(". "); //array of sentences
var sentence_results = "";
var i,j,paragraph;
var chunk = numSentences;
for (i=0,j=sentence_list.length; i<j; i+=chunk) {
paragraph = sentence_list.slice(i,i+chunk);
sentence_results += '<div id="sentenceDiv" >';
sentence_results += '<h4 id="paragraph'+i+'">'+paragraph+'</h4>';
sentence_results += '</div>';
}
$("#questionDiv").html(sentence_results);
return false;
}
}
我似乎无法为每个句子返回句点(。)。
感谢您的帮助.. =)
答案 0 :(得分:0)
非常有趣。你的逻辑是正确的,你只需修改这2行:
而不是
var chunk = numSentences;
执行:
var chunk = parseInt(numSentences, 10);
如果没有,当你在for中做'+'时,它会连接而不是添加。
而不是:
paragraph = sentence_list.slice(i,i+chunk);
执行:
paragraph = sentence_list.slice(i,i+chunk).join(". ");
所以你得到了回归的时间。
经测试,它有效:)。
来自玻利维亚拉巴斯的欢呼声