账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    怎样实现通过改变input值来改变div位置和大小?
    67
    0

    需要实现的功能是点击“添加”按钮可以添加一个div(最多5个),点击或拖拽div,同时在4个input中显示该div的x、y坐标和宽度、高度,并且在改变input的值时让该div也作出相应改变。
    目前实现了前一个功能,但是修改input值改变div的功能未实现,请问一下该如何做呢?不胜感激!!!
    代码:
    HTML:

    <div class="layout-preview-in" id="layout-preview-in"></div>
    <div align="center" id="layout-btn-div" style="display: none; margin: 0 0 10px 0">
        <button class="btn-add" type="button" onclick='addElement()'>添 加</button>
        <button class="btn-delete" type="button" onclick='dropElement()'>删 除</button>
    </div>
    <div id="parameter-control" class="parameter-control" align="center">
        <span style="margin: 0 25px 0 0">模块名: <input type="text" id="element-name" class="parameter-control-input" readonly></span>
        <span style="margin: 0 25px 0 0">x: <input type="text" id="input-x" class="parameter-control-input" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"></span>
        <span style="margin: 0 25px 0 0">y: <input type="text" id="input-y" class="parameter-control-input" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"></span>
        <span style="margin: 0 25px 0 0">宽度: <input type="text" id="input-width" class="parameter-control-input" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"></span>
        <span style="margin: 0">高度: <input type="text" id="input-height" class="parameter-control-input" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"></span>
    </div>

    js:

    var numi = 1;
    var numj = 1;
    var len;
    
    //添加函数
    function addElement(){
        if(numi==6){
            alert("最多只能生成5个模块!")
        }else{
            var div = document.createElement('div');
            //设置div样式
            div.className = 'elemDiv';
            div.style.background = '#c9c9c9';
            div.style.width = '100px';
            div.style.height = '100px';
            div.style.border = 'solid 1px #fff';
            div.style.fontSize = '16px';
            div.style.zIndex = 100;
            div.style.cursor = 'move';
            div.innerHTML = numi;
            div.style.position = 'absolute';
            //定义div的id
            div.id = 'ele'+numi;
            div.menu = 'menu'+numi;
            //生成子div
            document.getElementById('layout-preview-in').appendChild(div);
            //添加功能
            $('#ele'+numi).resizable();
            $('#ele'+numi).draggable();
    
            //获取layout-preview-in坐标和大小用作越界判断
            var bigX = document.getElementById('layout-preview-in').offsetLeft;
            var bigY = document.getElementById('layout-preview-in').offsetTop;
            var bigWidth = document.getElementById('layout-preview-in').offsetWidth;
            var bigHeight = document.getElementById('layout-preview-in').offsetHeight;
    
            //点击div,该div变色
            var divs = document.getElementById("layout-preview-in").getElementsByTagName("div");
            len = divs.length;
            console.log(len);
            //alert(len);
            var currentDiv = null;
            for(var aai=0;aai<len;aai++){
                divs[aai].onmousedown = function(e){
                    currentDiv = e.target;
                    for(var aaj=0;aaj<len;aaj++){
                        divs[aaj].style.backgroundColor = "#c9c9c9";
                        divs[aaj].style.zIndex = 1;
                    }
                    this.style.backgroundColor = "#8db6cd";
                    this.style.zIndex = 999;
                    document.getElementById('element-name').value = this.id;
                    document.getElementById("input-x").value = (this.offsetLeft - bigX) * 2;
                    document.getElementById("input-y").value = (this.offsetTop - bigY) * 2;
                    document.getElementById("input-width").value = this.offsetWidth * 2;
                    document.getElementById("input-height").value = this.offsetHeight * 2;
                    $('#input-x').keydown(function (ele) {
                        if (ele.keyCode == 13){
                            this.offsetLeft = $('#input-x').val()/2;
                            console.log($('#input-x').val());
                        }
                    });
                    this.onmousemove = function(e){
                        if(currentDiv && currentDiv == e.target) {
                            document.getElementById('element-name').value = this.id;
                            document.getElementById("input-x").value = (this.offsetLeft - bigX) * 2;
                            document.getElementById("input-y").value = (this.offsetTop - bigY) * 2;
                            document.getElementById("input-width").value = this.offsetWidth * 2;
                            document.getElementById("input-height").value = this.offsetHeight * 2;
                        }
                        if((this.offsetLeft < bigX) || (this.offsetTop < bigY) || ((this.offsetLeft + this.offsetWidth) > (bigX + bigWidth)) || ((this.offsetTop + this.offsetHeight) > (bigY + bigHeight))){
                            this.style.opacity = '0.4';
                        }else{
                            this.style.opacity = '1';
                        }
                    };
                };
            }
    
            numi++;
            numj++;
        }
    }
    
    //删除函数
    function dropElement(){
        var dropDiv = document.getElementById('ele'+(numi-1));
        document.getElementById('layout-preview-in').removeChild(dropDiv);
        numi--;
        len = len - 4;
    
        var dropCheckBox = document.getElementById('cBox'+(numj-1));
        document.getElementById('partition-checkbox').removeChild(dropCheckBox);
        var dropIdText = document.getElementById('idtext'+(numj-1));
        document.getElementById('partition-checkbox').removeChild(dropIdText);
        numj--;
    }
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 你可以使用JavaScript的DOM操作来实现这个功能。以下是一个简单的例子:

      javascript function changeDivPosition(input, divId) { var div = document.getElementById(divId); var position = parseInt(input.value); div.style.position = 'absolute'; div.style.left = position; div.style.top = position; }

      在这个例子中,changeDivPosition函数接受两个参数:输入框的值和需要移动的div的ID。它首先获取指定div的DOM元素,然后将输入框的值转换为一个整数,并将其设置为div的位置。最后,它将div的样式设置为position: absolute; left:expression; top:expression;,这将使div在页面上水平和垂直方向上居中对齐。

      你可以像这样调用这个函数:

      javascript changeDivPosition('10px', 'yourDivId');

      这将把div的位置设置为10px,使其在页面上居中对齐。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部