web開発をsafariでしてつまずいたことメモ


webアプリ開発をしているとchromeで動くのにsafariで動かない!なんてことがありましたのでそのメモ。

remove関数には気をつける

ページ内で動的に記入欄を増やすボタンと減らすボタンを作った時につまずいた。

hoge.html
<!DOCTYPE html> 
<html lang="ja"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript">
                //記入欄を増やす
        function add()
        {
            var div_element = document.createElement("div");
            div_element.innerHTML = '<input type="text" name="text[]" size="50" value=""><br>';
            var parent_object = document.getElementById("hoge");
            parent_object.appendChild(div_element);
        }
        //記入欄を減らす
        function remove()
        {
            var parent_object = document.getElementById("hoge");
            parent_object.removeChild(parent_object.lastChild);
        }
        </script>
</head>
<body>
            //ここにボタンを追加していく
      <div id="hoge">
      </div>
      <div>
      <button type="button" onclick="add();">テキスト追加!</button>
      <button type="button" onclick="remove();">テキスト削除!</button>
      </div>
</body>
</html>

Date()関数にも気をつける

例えば、


var date = new Date(yy+'-'+mm+'-'+dd);


yy=2017, mm=5, dd=2
とするとdateはNANでした。そこで
yy=2017, mm=05, dd=02
とすると正常に動作しました。ということで


var targetDate = new Date(yy+'-'+("0"+mm).slice(-2)+'-'+("0"+dd).slice(-2));

とすることで解決。sliceメソッドは指定した範囲を切り出します。引数を負の値にすると文字列の最後からその数分数え、文字列の終わりまで切り出します。

追記

別のPCで上記の修正なしでsafariで実行すると正常に動作しちゃいました。なんだったのか。