- 締切済み
javascript 書き方について(バーコード)
精肉会社で働いています。 在庫管理をタブレットを使い管理できるようにしたいと思っています。 プログラムを少しだけ覚えていたのでコードを書いています。 HTMLでフォームを書いて、バーコードスキャナーで下記のバーコードを読み取り、必要なところだけ(重量)表示するプログラムを書いていますが、うまくいきません。 どうすればいいのかわかりません。 教えてください。 下記はソースコードです。 <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> const textbox = document.getElementById("message") var sugi=String(textbox); var message1=sugi.substr(14,17); </script> </head> <body> <input type="text" id="message" id="message1" type="text"> </body> </html>
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- asciiz
- ベストアンサー率70% (6849/9742)
ご質問のプログラムは動いています。 それではなぜなにも出ないかというと。 <head>内を読み込んでいるときに、そのプログラムが実行されるわけです。 でもプログラムが実行されたそのとき、テキストボックスには何も入っていません。 何も無い文字列の、14文字目とかからを切り出そうとしても、結局空文字列となります。 なので何も表示されません。 その後、テキストボックスにバーコードリーダーで呼んだ値が入ったとします。 でも、プログラムは実行済みなので、二度と動きません。 テキストボックスにあとから値を入れても、プログラムが自動的に動く訳では無いので、入力した文字列は何も加工されません。 そういうわけで、全く変化が見られないのです。 ---- そこで、「テキストボックスに値が入ってから」「プログラムを実行する」としたいわけです。 そのためには、あとから呼び出せるよう、プログラムを関数として定義します。 そして実行のトリガーとしてとりあえず、「ボタンを押したときに呼び出される」というようにしてみました。 以下のサンプルでは、既にバーコードリーダーで読み取れたとして、値をテキストボックスにあらかじめセットしています。 でもHTML表示時点では、何も変化しません。 ボタンを押すと、onclick イベントで extract() 関数が呼び出されます。 その中では、テキストボックスに入っている文字列の中から、指定部分を取りだします。 重量って言うのは、2番目の閉じカッコのあとから6桁でしょうかね? ※バーコードデータは数字のみのようですね そこだけを取り出し、同じテキストボックスのvalueに代入するので、テキストボックスの内容が変化します。 再実験するにはリロードして、テキストボックスの中身を書き換えてからボタンを押したりしてみましょう。 ----以下サンプルプログラム(html)---- <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> function extract() { var textbox = document.getElementById("barcode"); var amount = textbox.value.substr(19,6); textbox.value = amount; } </script> </head> <body> バーコード: <input type="text" id="barcode" size="64" value="019490186120237310200194011211116210102664233"> <input type="button" value="部分取り出し" onclick="extract()"> </body> </html>
- AsarKingChang
- ベストアンサー率46% (3467/7474)
>うまくいきません。 どううまく行かないのか、貴方しかわからないと思います。 const textbox = document.getElementById("message") var sugi=String(textbox); const である必要性が不明。 だったら素直に、 var sugi=String(document.getElementById("message")); でも構わない。 また、そもそも、これは「文字」しか扱わないので、 直代入で全くかまいません。 次に、 var message1=sugi.substr(14,17); 14から「17文字」になってます。 もしこれが、3文字なら https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/substr var message1=sugi.substr(14,3); だと思いますよ。 以上を整理すると、 var message1=document.getElementById("message").substr(14,3); みたいになっちゃいます。 しかし「14って何なんだ?」って問題。 また「17だとか3ってなんだ?」ってのもセット。 ")"を2回見つけた後、続く"("までなど、 即値以外でやったほうがいいかとは思いますが。 なのですが、まず何をしたいのかを書いてみてはいかがですか?