0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

window.confirm()で配列のデータを改行する

Last updated at Posted at 2022-04-21

window.confirm()で配列を改行して表示することに躓いてしまったので、そのメモを残します。
やりたかったことは「警告メッセージは配列のデータを一列ではなく、改行して表示したい。」でした。

①うまく表示できなかった時

実行すると、何も加工していないので配列の形のまま表示されていました。(まあそうですよね。。。)
ちなみにwindow.confirm()は、onsubmitの部分でreturnで返す形にしないと「キャンセル」をクリックした場合でもサブミットしてしまうので注意です。

<画面>

image.png

<ソースコード>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
</head>
<body>
<form onsubmit="return checkWarnings()">
    <div>
        <label for="example">window.confirmの練習です。文字を入れて「送信」ボタンを押してください!→</label>
        <input id="example" type="text" name="text">
    </div>
    <div>
        <input type="submit" value="送信">
    </div>
</form>
<script>
function checkWarnings() {
    var warnings = ['実行しますか?', '本当に実行しますか?', '実行して後悔はないですか?'];
    if(!window.confirm(warnings)){
       return false;
    }
}
</script>
</body>
</html>

②うまく表示できたとき

改行コード「\r\n」をforEach文で回して詰め込むことによって解決できました。
改行コード「\n」をforEach文で回して詰め込むことによって解決できました。
2022/04/22追記:「\r\n」より「\n」を使用する方がトラブルが少ないとのなので、「\n」に修正しました。

<画面>

image.png

<ソースコード>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
</head>
<body>
<form onsubmit="return checkWarnings()">
    <div>
        <label for="example">window.confirmの練習です文字を入れて送信ボタンを押してください!→</label>
        <input id="example" type="text" name="text">
    </div>
    <div>
        <input type="submit" value="送信">
    </div>
</form>
<script>
function checkWarnings() {
    var warnings = ['実行しますか?', '本当に実行しますか?', '実行して後悔はないですか?'];
+    var formatWarnings = '';
+    warnings.forEach(function(element){
+        formatWarnings += element + '\n';
+    });
-    if(!window.confirm(warnings)){
+    if(!window.confirm(formatWarnings)){
       return false;
    }
}
</script>
</body>
</html>

改行コードをループで回すことがなく戸惑ってしまいましたが、また一つ勉強になりました。

追記:スマートな書き方

ループ分で回していましたが、joinを使うことでスマートに書けました。

function checkWarnings() {
    var warnings = ['実行しますか?', '本当に実行しますか?', '実行して後悔はないですか?'];
    if(!window.confirm(warnings.join('\n'))){
       return false;
    }
}
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?