0

奇妙な問題。一言で表すのは難しいですが、やってみます。(私はJavaScriptの初心者です)。

マウスが.uタグの上にあるとき、私はそれが何かをしたいです。ので、私は持っています:

var dotUElements = document.getElementsByClassName("u");

for (var ii = 0; ii < dotUElements.length; ii++) {
    dotUElements[ii].onmouseover = createHandler1( dotUElements[ii] );
    dotUElements[ii].onmouseout = createHandler2( dotUElements[ii] );
}

次にハンドラーを追加します。

function createHandler1( myobj ) {
    return (function() {ff1(myobj);});
}

function createHandler2( myobj ) {
    return (function() {ff2(myobj);});
}

マウスアウトの機能ff1は次mouseoverff2とおりです。

function ff1 (myobj) {
    myobj.style.color="red";
    var uChar = myobj.firstChild.nodeValue;
    var uNum =  uChar.charCodeAt(0);
    uName = unicodeTable(uNum);
    var uHex = (uNum).toSring(16);
}

function ff2 (myobj) {
    myobj.style.color="black";
}

問題は最後の行です

    var uHex = (uNum).toSring(16);

エラーが発生します:

エラー:TypeError:uNum.toSringは関数ではありません

その行を単純に置き換えると

(30).toSring(16);

同じエラー。何が問題なのかについてのヒントはありますか?私はでコードを持っています

http://xahlee.info/js/ex/xx_test.html

4

1 に答える 1

-1

ここにあなたの例の実用的なデモがあります

function unicodeTable(num) {
  var unicodedata = {
    0x2190: "LEFTWARDS ARROW",
    0x2191: "UPWARDS ARROW",
    0x2192: "RIGHTWARDS ARROW",
    0x2193: "DOWNWARDS ARROW",
  };
  return unicodedata[num];
}

function createHandler1(myobj) {
  return (function() {
    ff1(myobj);
  });
}

function createHandler2(myobj) {
  return (function() {
    ff2(myobj);
  });
}

function ff1(myobj) {
  myobj.style.color = "red"; // test code. so we know it's activated
  var uChar = myobj.firstChild.nodeValue;
  var uNum = uChar.charCodeAt(0);
  uName = unicodeTable(uNum);
  var uHex = (uNum).toString(16);
  alert(uHex);
}

function ff2(myobj) {
  myobj.style.color = "black"; // test code. so we know it's activated
}

var dotUElements = document.getElementsByClassName("u");

for (var ii = 0; ii < dotUElements.length; ii++) {
  dotUElements[ii].onmouseover = createHandler1(dotUElements[ii]);
  dotUElements[ii].onmouseout = createHandler2(dotUElements[ii]);
}
<body>

  <h1>unicode test 3</h1>

  <p>
    <b class="u">←&lt;/b>
    <b class="u">→&lt;/b>
    <b class="u">↑&lt;/b>
    <b class="u">↓&lt;/b>
  </p>

  <p>when mouse hover on b.u element, show the unicode name.</p>
</body>

値を表示するために を追加しましたalert(uHex);

うまくいかなかった場合はお知らせください。

于 2013-03-02T22:38:19.157 に答える