表題の通り、クリックしたらtext部分をコピーできるようにしたいのですが、このコードだとコピーができません。。
初心者で申し訳ないのですが、どこが間違っているのか教えていただけるとありがたいです。
コンソールで確認するとエラーが出ていました。
Uncaught TypeError: Cannot read property 'addEventListener' of null
よろしくお願いします。
function txtCopy() { const target = document.getElementById('input_copy'); if (navigator.userAgent.match(/ipad|ipod|iphone/i)) { target.readOnly = false; const range = document.createRange(); range.selectNode(target); window.getSelection().addRange(range); document.execCommand('copy'); target.readOnly = true; } else { target.select(); document.execCommand('copy'); } alert("コピーしました"); }; const trg = document.getElementById('btn_copy'); trg.addEventListener('click',txtCopy);
show.html.haml .-# management_screenの画面 .header .header__center = link_to "#", class: "header__center__link" do Management screen .header__right_btn .header__right_btn__menu_btn = link_to "#", class: "header__right_btn__menu_btn__icon" do = icon('fas', 'align-justify') .main .main__tweets_head_name = @user.name .main__tweets_head_sign_out_btn = link_to "ログアウト", destroy_user_session_path, method: :delete, class:"btn" .main__tweets_head_new_events_btn = link_to new_user_event_path(@user), class: "btn" do new_events .main__url_copy %input#input_copy{:readonly => "readonly", :type => "text", :value => "http://localhost:3000" + new_user_event_path(current_user)}/ %button#btn_copy 送信URLをコピー
head部分の読み込みはapplication.html.hamlで行ってます。
application.html.haml !!! %html %head %title ConditionMyApp = csrf_meta_tags = csp_meta_tag = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' = javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %body = yield
HTML <body> <div class='header'> <div class='header__center'> <a class="header__center__link" href="#">Management screen </a></div> <div class='header__right_btn'> <div class='header__right_btn__menu_btn'> <a class="header__right_btn__menu_btn__icon" href="#"><i class="fas fa-align-justify"></i> </a></div> </div> </div> <div class='main'> <div class='main__tweets_head_name'> test6 </div> <div class='main__tweets_head_sign_out_btn'> <a class="btn" rel="nofollow" data-method="delete" href="/users/sign_out">ログアウト</a> </div> <div class='main__tweets_head_new_events_btn'> <a class="btn" href="/users/c7992877-9685-439e-8d5c-aeb317199c15/events/new">new_events </a></div> <div class='main__url_copy'> <input id='input_copy' readonly='readonly' type='text' value='http://localhost:3000/users/c7992877-9685-439e-8d5c-aeb317199c15/events/new'> <button id='btn_copy'>送信URLをコピー</button> </div> </div>
回答1件
あなたの回答
tips
プレビュー