8

さて、私はこのコードを表示しています:

<input id="CI.SiteName" type="text" value="" name="@@CI.SiteName" disabled="">

次に、この関数を呼び出すイベントを実行します。

chooseSite = function () {
    var url = "/main/Ajax/GetSiteDetail?" +
        "&cid=" + escape(idSite);

    var ajx = sendAJAX(url, true);

    ajx.onreadystatechange = function () {
        if (ajx.readyState == 4) {
            var result = ajx.responseText;      
            result = "TOP";
            document.getElementById("CI.SiteName").value = result;
        }   
    }
}

ブラウザでは「TOP」に変更されましたが、firebugで要素を検査すると、INPUTのVALUE属性は「」のままで変更されていません。

4

2 に答える 2

22

value 属性は実際の値と同期されません。それがvalue プロパティの目的です。

.getAttribute('value')ただし、これは問題ではありません。プロパティ.valueを使用して現在の値にアクセスすることは決してないからです。

于 2012-04-27T07:29:28.237 に答える
0

<!DOCTYPE html>
<html>

<head>
  <title>Test</title>
  <meta charset="UTF-8" />
</head>

<body>
  <div id="app"></div>
  <div id="buttons">
    <button id="1" data-text="one">1</button>
    <button id="2" data-text="two">2</button>
    <button id="3" data-text="three">3</button>
    <button id="4" data-text="four">4</button>
    <button id="5" data-text="five">5</button>
    <input id="inp" value=""></input>
  </div>

  <script>
    const onClick = function() {

      var dataTextBtnField = this.getAttribute("data-text");
      var currentData = document.getElementById("inp").value

      var showValue = currentData + dataTextBtnField
      document.getElementById("inp").setAttribute("value", showValue);
      document.getElementById("inp").value = showValue;
    }

    const onChange = function() {
      this.setAttribute("value", this.value);
    }

    document.getElementById('1').onclick = onClick;
    document.getElementById('2').onclick = onClick;
    document.getElementById('3').onclick = onClick;
    document.getElementById('4').onclick = onClick;
    document.getElementById('5').onclick = onClick;
    document.getElementById('inp').onchange = onChange;
  </script>

</body>

</html>

document.getElementById("inp").setAttribute("value", showValue);

これを使用すると、HTMLコードでのみ変更され、ビューには反映されません。

document.getElementById("inp").value = showValue;

これを使用すると、ビューのみが変更され、コードは変更されません。

両方の行を使用して、両方の場所で変更します。

添付のスニペットの上記の行にコメントして、同じことを確認してください。

于 2021-09-26T18:51:56.407 に答える