> 数値を入力しても、文字列に変換されていると言う事でしょうか?
全角の数字はプログラミング言語では「数値」では無く「文字列」として扱われます。
toHalfWidth() 関数内では受け取った文字列を一文字ずつ文字コードを取り出し、全角半角のコードの差の分を計算して半角文字の文字コードを導き出し、文字コードを文字に変換するという処理をしていますから、戻り値は文字列です。
> のように変更して、大文字の1を入力して確認しても偽が出てしまいます。
まだおかしいでしょうか?
> それともここは正しいので、ここにない部分の問題でしょうか?
公開されていない部分で何をしているか判らないので randomNum 変数の中身が何なのか判断できないので、「if (randomNum === 0)」がどのように判定されるか分かりません。
ここが「真」になっていると仮定して
==========
var Answerhalf = "1";
var inputAnswer = toHalfWidth(Answerhalf);
if (inputAnswer == 1) {
document.write("TRUE");
} else {
document.write("FALSE");
}
/**
* 全角から半角への変革関数
* 入力値の英数記号を半角変換して返却
* [引数] strVal: 入力値
* [返却値] String(): 半角変換された文字列
*/
function toHalfWidth(strVal){
// 半角変換
var halfVal = strVal.replace(/[!-~]/g,
function( tmpStr ) {
// 文字コードをシフト
return String.fromCharCode( tmpStr.charCodeAt(0) - 0xFEE0 );
}
);
// 文字コードシフトで対応できない文字の変換
return halfVal.replace(/”/g, "\"")
.replace(/’/g, "'")
.replace(/‘/g, "`")
.replace(/¥/g, "\\")
.replace(/ /g, " ")
.replace(/~/g, "~");
}
==========
として実行したら「TRUE」が表示されました。
お礼
確かにそのまま入力した値を変数に入れずに判定する場合はvalueをつけても大丈夫ですが一度valueの値を変数に入れた場合はvalueをつけてはいけなかったですね。 確認してみます。
補足
https://webllica.com/change-double-byte-to-half-width/ で確認してみました。 Aをaにする機能はないようですね。あくまで全角のAを半角のAにするだけのようですね。