0
1

More than 3 years have passed since last update.

inputタグのrangeの値(value)が文字列でドハマりした話

Last updated at Posted at 2021-01-17

<input type="range" min="0" max="100" value="100" step="1" oninput="hogeValueChanged()">

こいつのvalueを使っているときに、意図しない動作に遭遇し、追っかけてみたら、文字列でした・・・(;・∀・)
仕様はちゃんと読みましょう。ってことですね。。。

inputタグのrangeのイメージ

こんな感じのコントロール(文字列は別):
image.png

うまくいかなかった箇所をさらしてみる

curHue1 = hue1.value; とか代入しています。


    let diffHue = newHue0 - curHue0;
    curHue0 = newHue0;
    console.log("diff hue:");
    console.log(diffHue);
    console.log("hue1 before:");
    console.log(curHue1);
    curHue1 = (curHue1+diffHue+360)%360;
    console.log("hue1 after:");
    console.log(curHue1); // ここで NaN になることがある
    curHue2 = (curHue2+diffHue+360)%360;

仕様記載

<input type="range"> - HTML: HyperText Markup Language | MDN

value 属性は、選択された数値を表す文字列が入った DOMString です。

選択された数値を表す文字列を含む DOMString。 Number として値を取得するには valueAsNumber を使用する。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1