在JavaScript中将换行符添加到数组值

3

这是我的 JavaScript 数组:

var quizArray = [
'When the weather is agreeable what do you prefer to do the most?~Something outside...Obviously!~I tend to enjoy things that aren\'t dependent on weather.~Read, possibly outside if I can find my sunscreen.~Do what I always do, which is whatever I want.~Try something new, like Planking.~~~','It\'s a weeknight and friend invites you to an orchestra. You would?~Kindly refuse. It\'s just not my thing.~Go, unquestionably. I love all art forms.~Ask who the composer is, then read all about them before going.~Confuse Orchestra with Opera and begin singing in Latin.~Go if the tickets are free, otherwise no.~~~',]

当我加载我的html时,每个答案后面不会显示换行符。我已经尝试在拆分后添加.join(<\br>),但这会将每个单词都分解开来。以下是我的代码:

function displayQuiz(ent, qnum) {

perPage++;
var qna = quizArray[qnum].split('~');
var od = []; for (var i = 1; qna[i] != null && qna[i] != ''; i++) od.push(i); od.sort( randOrd ); od.sort( randOrd ); 
var newF = document.createElement("form"); 
var newDq = document.createElement("div"); 
newDq.className = 'question'; 
newDq.appendChild(document.createTextNode(Number(qnum+1)+ ': ' +qna[0])); 
newF.appendChild(newDq); 
newDq = document.createElement("div"); 
newDq.className = 'answers'; 
for (var i = 1; qna[i] != null && qna[i] != ''; i++) {var newDa = document.createElement("label"); newDa.htmlFor = 'a'+qnum+i; /*@cc_on @if (@_jscript) var newR = document.createElement("<input name='a"+qnum+"'>"); @else */ 
var newR = document.createElement("input"); 
newR.name = 'a'+qnum; /* @end @*/ 
newR.type = 'radio'; 
newR.id = 'a'+qnum+i; 
newR.value = od[i-1]; 
newDa.appendChild(newR); 
newDa.appendChild(document.createTextNode(' '+qna[od[i-1]]+' ')); 
newDq.appendChild(newDa);} 
newF.appendChild(newDq); 
document.getElementById('quiz'+perPage).appendChild(newF);
}

如果需要,我会尽力发布更多信息。我将这个作为片段使用,并且对JavaScript非常新手。虽然不排斥自己学习,但我已经在互联网上浏览了很多内容,却找不到答案。


1
你有一个只包含单个字符串的数组。你应该先赋值这个字符串,然后再将它拆分成数组。但是不明白的是为什么你会使用~字符而不是换行符(\n)。 - zzzzBov
<wbr>是文本布局引擎的提示,表示可以在此处断行。 - Mike Samuel
4个回答

3

如果要创建一个字符串数组,最好将完整的字符串放入一个变量中然后使用 split() 方法进行拆分,并且为了添加
,可以使用 join()for() 方法。

以下是更佳的代码写法:

var quizArray = 'When the weather is agreeable what do you prefer to do the most?~Something outside...Obviously!~I tend to enjoy things that aren\'t dependent on weather.~Read, possibly outside if I can find my sunscreen.~Do what I always do, which is whatever I want.~Try something new, like Planking.~~~';

        function displayQuiz(ent, qnum) {

            perPage++;
            var qna = quizArray.split('~');
            var res = qna.join(" <br> ");
            return res;     
 }

你应该解释你的答案,而不仅仅是发布代码,并提供一个使用示例。可以用一行代码实现:quizArray.split('~').join('<br>') - RobG
如果我这样做,每个字母都会有一个旁边的单选按钮。我发布了我的其余代码,也许有人可以帮助我回答。谢谢。 - PA_Commons

1

我认为数组是这样创建的:

var arr = [val1, val2, val3];

你可以使用arr.push来添加更多的值或者使用arr.unshift在数组开头添加值。

http://jsfiddle.net/h_awk/K3kEv/

<script>
var arr = [1, 2, 3, 4], i;

for( i=0; i<arr.length; i++ )
{
document.write(arr[i] + '<br />');
}
</script>

1
除非您执行 arr.join('n'),否则它不会自动在数组元素之间添加换行符。 - Kyle Falconer
这并不会自动在每个逗号后面换行。数组只是带有特殊长度属性和方便方法的对象,字面量语法和默认字符串表示使用逗号分隔值。而且由于很少有人使用XHTML,所以答案应该使用HTML语法:arr.join('<br>'); - RobG

1
这是我采用的方法,使用.join添加br元素。如果在每个单词后添加br,我认为您最初没有指定要拆分的内容。
var string = 'When the weather is agreeable what do you prefer to do the most?~Something 
outside...Obviously!~I tend to enjoy things that aren\'t dependent on weather.~Read, possibly outside if I can find my sunscreen.~Do what I always do, which is whatever I want.~Try something new, like Planking.~~~';

var quizArray = string.split('~');
var finalString = quizArray.join('<br/>');

document.getElementById('yourIdHere').innerHTML = finalString;

这里有一个 jsfiddle 链接: http://jsfiddle.net/brettwlutz/Q35J2/1/


0
首先,回答你的问题。上面的代码应该能够工作,并使变量 qna 包含新的分割数组。你使用 .join("
") 的解决方案应该可以将这个新数组转换为一个带有 HTML 换行的字符串。也就是说,除非你想要 JS 换行符,否则你应该使用 .join("\n")。
我对你的问题是,为什么你要从只有一个元素的数组开始?一个字符串可以被拆分成一个数组,然后再用相同的方式合并回字符串。另外,如果你使用适当的数组语法来分隔你想要拆分的语句,而不是使用波浪符 ~,可能会更容易,然后可以摒弃 "split",直接使用合并操作。
var quizArray = ["When the weather is agreeable what do you prefer to do the most?", "Something outside...Obviously!, I tend to enjoy things that aren\'t dependent on weather.", "Read, possibly outside if I can find my sunscreen.", "Do what I always do, which is whatever I want.", "Try something new, like Planking."];

我唯一的理解是您仍在学习JS,这只是一个示例,用于学习如何拆分数组,但这并不是真正的实际应用程序,这就是为什么此帖子似乎对Stack Overflow用户有疑问。


好的,我明白你的意思。然而,那个数组里面有超过20个问题。我只是把它们全部剪切出来以便操作。 - PA_Commons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接