![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
以下のJavaScriptでパスワードの初回入力時(newvalue値がundefindの時(空欄の時)、指定したキーは存在しませんとのメッセージを出し再入力を求め、正しい時はリンク先に移動させたいのですが、全てリンク先に移動し上手く行きません。
どのように修正したら良いのでしょうか?
<HTML>
<head>
<meta charset="utf-8"/>
</head>
<body>
<div id ="login">
<h3>1パスワード入力</h3>
パスワード:<input type="number" id="newvalue" />
<input type="button" value="ログイン" onclick="setValue()"/>
</div>
<h3>3処理結果</h3>
<div id="result"/>
</body>
<script>
var db;
var indexedDB = window.indexedDB || window.mozIndexedDB || window.msIndexedDB;
if (indexedDB) {
var openRequest = indexedDB.open("mydb", 1.0);
openRequest.onupgradeneeded = function(event) {
db = event.target.result;
var store = db.createObjectStore("mystore", { keyPath: "mykey"});
store.createIndex("myvalueIndex", "myvalue", "myvalue2");
}
openRequest.onsuccess = function(event) {
db = event.target.result;
}
} else {
window.alert("このブラウザではIndexed DataBase API は使えません。");
}
function setValue(event) {
var key = "login";
var value = Number(document.getElementById("newvalue").value);
var transaction = db.transaction(["mystore"], "readwrite");
var store = transaction.objectStore("mystore");
var result = document.getElementById("result");
result.innerHTML = "";
if (value === undefined) {
result.innerHTML = "指定したキーは存在しません。";
} else {
var request = store.put({ mykey: key, myvalue: value});
request.onsuccess = function (event) {
key = "";
document.getElementById("newvalue").value = "";
location.href = "http://www.yahoo.co.jp";
}
}
}
</body>
</HTML>
No.1ベストアンサー
- 回答日時:
>newvalue値がundefindの時
ちょっと意味がわからないです
id=newvalueの要素がなければ、オブジェクトはundefinedになりますが
「値」がundefinedになることはありませんよ
document.getElementById("newvalue") == undefined
document.querySelectorAll("#newvalue").length == 0
などでチェックして下さい
存在しないオブジェクトに対して.valueを参照することはできません。
No.3
- 回答日時:
1. <script>タグの終わりを記述すること </script>
→閉じないと、</body>や</html>もJavaScriptとして認識されるのでエラーになる
2. パスワード入力ならば<input type="number">ではなくtype="password"にする
3. type=numberは数値かNaNしか返さない。
type=passwordにすると入力された値or"undefined"を返す。
スクリプトの何処に問題があるか以前に、上記の通りhtmlを改善しないと話が進まない。
タメ口でゴメン。
No.2
- 回答日時:
こんにちは
indexedDBを使ったことはありませんが、ご質問の内容は
>if (value === undefined) {
> result.innerHTML = "指定したキーは存在しません。";
>} else {
の判定のことだと想像しました。
変数vakueの内容を見てみると、
>var value = Number(document.getElementById("newvalue").value);
とありますが、Numberが返すのは数値かNaN値のはずなので、undefinedにはなり得ないのではないでしょうか?
その結果、制御は必ず else 側に流れるものと思います。
入力値をチェックしたいのであれば、まず、
>document.getElementById("newvalue").value
の値をチェックした方が良いのでは?
ついでながら、その他の点。
「パスワード」と表示しながらinput要素はtype=numberとなっています。実際の使い方はわかりませんけれど、ミスディレクションになっているように感じます。
<div id="result"/>は、きちんと閉じタグが必要かと。
<script>の閉じタグも見当たりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ActiveXobjectが作成できない
-
JavaScriptとcookieを利用して...
-
JavaScriptでオブジェクトを取...
-
innerHTML実行後のイベント
-
HTML:Tableタグに対し、JavaScr...
-
javascript 作成した要素にCS...
-
JavaScriptでのcheckbox作成
-
<a>タグのテキストを取得
-
モーダルダイアログウィンドウ...
-
/*@cc_on@*/
-
Click回数を数え、規定された回...
-
メニュー3つとも個々にドロップ...
-
onclickは良くないのですか
-
googlemapsAPIでマーカー表示さ...
-
javascript の 命令文の記述で...
-
RadioButtonListの表示制御
-
「nullまたはオブジェクトでは...
-
html5 レーダーチャート
-
日本語入力の禁止
-
関数でy=g(x)のgとは何の略です...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
任意の座標をクリックさせるには
-
javascript 特定のタグのidの存...
-
onchangeイベントを使ってspan...
-
HTML:Tableタグに対し、JavaScr...
-
モーダルダイアログウィンドウ...
-
日本語入力の禁止
-
javascriptでCSVを呼出しvlookup
-
Click回数を数え、規定された回...
-
画像上のクリックした場所が分...
-
【Tabキー】特定の範囲内だけで...
-
配列の大括弧と丸括弧はどう違う?
-
重複しないくじの作り方がわか...
-
javascriptで、表示されている...
-
div要素内の全input要素をdisable
-
javascriptであるボタンを押す...
-
javascriptで自動計算フォーム...
-
RadioButtonListの表示制御
おすすめ情報