jqueryでクイズを作成
jqueryでクイズを作っているのですが、下のプログラムのような問題を書く部分(問題1、問題2...)のところに改行などを用いた長い文章を書きたいのですがどのようにしたらよいでしょうか?
// answers の先頭が正答になるようにして下さい。選択肢はシャッフルして表示されます。
var questions = [
{'question': '問題1', 'answers': ['富士山', '愛鷹山', '天保山', '八ヶ岳']},
{'question': '問題2', 'answers': ['バラ', 'チューリップ', 'タンポポ', '百合']},
{'question': '問題3', 'answers': ['あららぎ', 'せんじょうがはら', 'せんごく', 'かんばる']},
{'question': '問題4', 'answers': ['宇宙人', '異世界人', 'ドイツ人', '未来人']}
];
Array.prototype.shuffle = function() {
var i = this.length;
while(i){
var j = Math.floor(Math.random()*i);
var t = this[--i];
this[i] = this[j];
this[j] = t;
}
return this;
};
var answers = [];
var current_question_number;
$.each(questions, function (i, question) {
question.true_answer = question.answers[0];
question.answers.shuffle();
});
$(function() {
showQuestion(0);
$('#answer_button').click(function () {
var answer = -1;
$.each($('#answers input'), function (i, value) {
if ($(value).is(':checked')) {
answer = i;
return false;
}
});
if (answer == -1) {
$('#warning').slideDown();
return false;
}
$('#warning').slideUp();
answers[current_question_number] = questions[current_question_number].answers[answer];
if (current_question_number < questions.length - 1) {
showQuestion(current_question_number + 1);
} else {
showResult();
}
});
});
function showQuestion(question_number) {
current_question_number = question_number;
var question = questions[question_number];
$('#question_number').text((question_number + 1) + "/" + questions.length);
$('#question_body').text(question.question);
$('#answers').empty();
$.each(question.answers, function (i, value) {
$('#answers').append($('<li/>').append($('<input type="radio" name="answer" id="answer' + i + '"/>')).append($('<label for="answer' + i + '"/>').text(value)));
});
}
function showResult() {
$('#question_view').hide();
$.each(questions, function (i, question) {
var is_true = answers[i] === question.true_answer;
$('#results').append($('<tr/>')
.addClass(is_true ? 'true' : 'false')
.append($('<th/>').text(i + 1))
.append($('<td/>').text(answers[i]))
.append($('<td/>').text(question.true_answer))
.append($('<td/>').text(is_true ? '○' : '×'))
);
});
$('#result_view').show();
}
お礼
ありがとうございます。 いろいろ試しましたが、うまくいかず 検証の結果、 持たせようとしているcookieのvalueが長すぎるのが問題だったようです。 (上記のcolはダミーです。) これについては別の方法で回避し、解決できました。 DOM Storage… cookieより大容量で扱えるようですがIE8からなんですね。 なんとも残念です。 勉強になりました。 どうもありがとうございました。