- 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 条
- 全部回答
-
不了解我゛就别说我变了 普通会员 1楼
你可以使用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,使其在页面上居中对齐。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

