JavaScriptのドラッグサイズ変更ボックスが期待どおりに機能しない理由

ドラマシー

これは私のコードです。jqueryを使用せずにJavaScriptのみでサイズ変更ボックスを作成することを好みます。コードを使用すると、段落をドラッグしたときに段落の幅のサイズを変更できますが、期待どおりに機能しないようです。

<html>
<head>
<style>

div{
    border: 1px solid black;
    width: 500px;
    height: 500px;
    padding: 0px;
    margin: 0px;

}

p{
    border: 1px solid red;
    position: absolute;
    height: 200px;
    width: 200px;
    padding: 0px;
    margin: 0px;
}
</style>
<script>
window.onload = function(){

    document.body.onmousedown = function(event){

         var mouseStartX = event.clientX;
         var mouseStartY = event.clientY;
       var div = document.getElementsByTagName("div");

       var para = document.createElement("p");

       div[0].appendChild(para);



         document.styleSheets[0].cssRules[1].style.top = mouseStartY;
              document.styleSheets[0].cssRules[1].style.left = mouseStartX;



        document.body.onmousemove = function(event){

            if(para){

            document.styleSheets[0].cssRules[1].style.width = event.clientY - mouseStartY;



            }


        }

       document.body.onmouseup = function(){
            div[0].removeChild(para);

       }


    };

};
</script>
</head>
<body>
<div>



</div>
</body>
</html>

私の問題は、マウスを右にドラッグしてもpが拡大し続けると予想していることですが、特定のポイントにドラッグした場合にのみ機能します

wecsam

あなたの言葉遣いが少し曖昧なので、私はあなたの質問に答えることを試みることができるだけです。ただし、コードをコピーして、WebブラウザにロードしたテストHTMLファイルに貼り付けたところ、問題が何であるかを推測できます。問題はp、カーソルをドラッグすると拡大しますが、右の境界線がカーソルと一致するように拡大されないことです。

まず第一に、あなたのdocument.body.onmousemove関数で:

document.body.onmousemove = function (event) {
    if (para) {
        document.styleSheets[0].cssRules[1].style.width = event.clientY - mouseStartY;
    }
}

あなたが書いたevent.clientYmouseStartY私があなたが意味したevent.clientX思うときmouseStartXただし、CSSルールも変更しているためpx、幅の末尾に単位追加する必要があります

document.body.onmousemove = function (event) {
    if (para) {
        document.styleSheets[0].cssRules[1].style.width = (event.clientX - mouseStartX) + "px";
        // The parentheses are technically not required; I put them there for clarity.
    }
}

同じことが次の2行のコードにも当てはまります。

document.styleSheets[0].cssRules[1].style.top = mouseStartY;
document.styleSheets[0].cssRules[1].style.left = mouseStartX;

ユニットを含めるのを忘れました。+ "px"各行の終わりの前に追加するだけです。

document.styleSheets[0].cssRules[1].style.top = mouseStartY + "px";
document.styleSheets[0].cssRules[1].style.left = mouseStartX + "px";

また、それだけで削除することをお勧めしますwindow.onmousemovewindow.onmouseup、あなたにwindow.onmouseup代わりをチェックする機能をparaお使いにwindow.onmousemove機能。paraから削除したdiv後でも、と評価されtrueます。

最後に、代わりに経由して、スタイルシートを変更するとdocument.styleSheets[0].cssRules[1]、あなただけの直接のスタイルを編集できますpara使用してpara.style.widthの代わりにdocument.styleSheets[0].cssRules[1].style.width

私はあなたのwindow.onload関数を次のように書き直しました

window.onload = function(){
    document.body.onmousedown = function(event){
        var mouseStartX = event.clientX,
            mouseStartY = event.clientY,
            div = document.getElementsByTagName("div"),
            para = document.createElement("p");
        div[0].appendChild(para);
        para.style.top = mouseStartY + "px";
        para.style.left = mouseStartX + "px";
        document.body.onmousemove = function(event){
            para.style.width = event.clientX - mouseStartX + "px";
            //para.style.height = event.clientY - mouseStartY + "px";
            // Uncomment the line above if you want to drag the height, too.
        }
        document.body.onmouseup = function(){
            div[0].removeChild(para);
            document.body.onmousemove = null;
            document.body.onmouseup = null;
        }
    };
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

角度のあるフレックスレイアウト、グリッドサイズが期待どおりに機能しない

分類Dev

HTML / CSSのボタンのサイズ変更が期待どおりに機能しない

分類Dev

ドラッグrectが期待どおりに機能しない

分類Dev

スライスメソッドが期待どおりに機能しない

分類Dev

UIViewのサイズ変更中にアニメーションが期待どおりに機能しない

分類Dev

マジック8ボールプログラムのループが期待どおりに機能しない

分類Dev

マングースでトライアンドキャッチが期待どおりに機能しない理由を理解できません

分類Dev

jQueryMobileグリッドが期待どおりに機能しない

分類Dev

jQueryMobileグリッドが期待どおりに機能しない

分類Dev

Purecssグリッドが期待どおりに機能しない

分類Dev

クリック時のJavascriptイベントリスナーが期待どおりに機能しない

分類Dev

Objective-Cの合計クラスメソッドが期待どおりに機能しない

分類Dev

SpringBootチェックボックスアレイが期待どおりに機能しない

分類Dev

Select2ブートストラップ要素が期待どおりにサイズ変更されない

分類Dev

スプリッターの移動後にWpfグリッドのサイズ変更が機能しない

分類Dev

インラインブロックが期待どおりに機能しない

分類Dev

入力テキストフィールドのドラッグ可能/サイズ変更が機能しない

分類Dev

numpyndarrayのサブクラスが期待どおりに機能しない

分類Dev

トグルクラスは期待どおりにホバーで機能しません-divのサイズを変更しません

分類Dev

imgsrcsetとサイズが期待どおりに機能しない

分類Dev

入力のボーダーボックスが期待どおりに機能しない

分類Dev

JavaScriptのsetInterval()メソッドが期待どおりに機能しない

分類Dev

ブートストラップグリッドが期待どおりに機能しない

分類Dev

チェックボックスonchange機能がIEとChromeで期待どおりに機能しない

分類Dev

Javascriptのnullチェックが期待どおりに機能しない

分類Dev

Golangスライス-Java Arraylist-再帰バックトラッキング-クラシックAlgo PowersetがGolangで期待どおりに機能しない

分類Dev

Djangoミックスインが期待どおりに機能しない

分類Dev

TrixWYSIWYGタブインデックスが期待どおりに機能しない

分類Dev

フレックスボックスを使用して水平棒グラフを作成する-幅が期待どおりに機能しない

Related 関連記事

  1. 1

    角度のあるフレックスレイアウト、グリッドサイズが期待どおりに機能しない

  2. 2

    HTML / CSSのボタンのサイズ変更が期待どおりに機能しない

  3. 3

    ドラッグrectが期待どおりに機能しない

  4. 4

    スライスメソッドが期待どおりに機能しない

  5. 5

    UIViewのサイズ変更中にアニメーションが期待どおりに機能しない

  6. 6

    マジック8ボールプログラムのループが期待どおりに機能しない

  7. 7

    マングースでトライアンドキャッチが期待どおりに機能しない理由を理解できません

  8. 8

    jQueryMobileグリッドが期待どおりに機能しない

  9. 9

    jQueryMobileグリッドが期待どおりに機能しない

  10. 10

    Purecssグリッドが期待どおりに機能しない

  11. 11

    クリック時のJavascriptイベントリスナーが期待どおりに機能しない

  12. 12

    Objective-Cの合計クラスメソッドが期待どおりに機能しない

  13. 13

    SpringBootチェックボックスアレイが期待どおりに機能しない

  14. 14

    Select2ブートストラップ要素が期待どおりにサイズ変更されない

  15. 15

    スプリッターの移動後にWpfグリッドのサイズ変更が機能しない

  16. 16

    インラインブロックが期待どおりに機能しない

  17. 17

    入力テキストフィールドのドラッグ可能/サイズ変更が機能しない

  18. 18

    numpyndarrayのサブクラスが期待どおりに機能しない

  19. 19

    トグルクラスは期待どおりにホバーで機能しません-divのサイズを変更しません

  20. 20

    imgsrcsetとサイズが期待どおりに機能しない

  21. 21

    入力のボーダーボックスが期待どおりに機能しない

  22. 22

    JavaScriptのsetInterval()メソッドが期待どおりに機能しない

  23. 23

    ブートストラップグリッドが期待どおりに機能しない

  24. 24

    チェックボックスonchange機能がIEとChromeで期待どおりに機能しない

  25. 25

    Javascriptのnullチェックが期待どおりに機能しない

  26. 26

    Golangスライス-Java Arraylist-再帰バックトラッキング-クラシックAlgo PowersetがGolangで期待どおりに機能しない

  27. 27

    Djangoミックスインが期待どおりに機能しない

  28. 28

    TrixWYSIWYGタブインデックスが期待どおりに機能しない

  29. 29

    フレックスボックスを使用して水平棒グラフを作成する-幅が期待どおりに機能しない

ホットタグ

アーカイブ