当我创建新包并添加两个或更多盒子时,所有盒子的id将与最后一个盒子的id相同
When I create new package and add two or more box, all boxes id is going to be same to the last boxes id
当我创建新包并添加两个或多个盒子时,所有盒子的id将与最后一个盒子的id相同。我想让所有的盒子都有不同的id。例如,第一个盒子的id=pack0,第二个盒子的id=1,等等。
function Pack() {
Pack.id = "pack" + packList.length;
Pack.items = [];
Pack.ShipTo = 0;
Pack.ShipFr = 0;
packList. push(Pack);
document.getElementById("packCount").value = packList.length;
var pkgs = document.getElementById("packages")
}
Pack.items = [];
Pack.ShipTo = 1234;
Pack.ShipFr = 9876;
var packList = [];
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
// Pack.items.pop(ev.target.id)
}
function drop(ev) {
ev.preventDefault();
debugger;
var data = ev.dataTransfer.getData("text");
var itemToMove = document.getElementById(data);
ev.target.appendChild(itemToMove);
}
function checkAdult(idToFind) {
for (i = 0;packList.length;++i)
{
if( packList[i].id == idToFind)
{
return packList[i];
}
}
return null;
}
function createPackageClick(e) {
var itm = document.getElementById(packList[0].id);
var cln = itm.cloneNode(true);
cln.id = "pack" + packList.length;
itm.parentNode.appendChild(cln);
// Clean Images of Source div
var imageHolder = cln.querySelector(".items");
while (imageHolder.children.length > 0) {
imageHolder.removeChild(imageHolder.children[0]);
}
var pack=Pack();
console.log(cln.id + " package created. We Have " + packList.length + " packages.");
return false;
}
function deletePack(e) {
if (packList.length < 2) return false;
var main = document.getElementById("main");
while (e.getElementsByTagName("img").length > 0) {
main.appendChild(e.getElementsByTagName("img")[0]);
}
Pack.items = [];
e.parentNode.removeChild(e);
packList.forEach(function(entry) {
if (entry.visualItem == e.id) {
packList.pop(entry);
}
});
for (index = 0; index < packList.length; ++index) {
packList[index].id = "pack" + index;
}
document.getElementById("packCount").value = packList.length;
}
$(document).ready(function() {
$("#Button1").click(function() {
var data = new Array();
$("div .bag div").each(function(index) {
data[index] = "'" + this.innerHTML + "'";
});
$.ajax({
type: 'POST',
url: 'packman.aspx/ChangePackaging',
contentType: "application/json; charset=utf-8",
data: '{ products:[' + data.join() + ']}',
dataType: 'json',
success: function(results) { alert(results.d); },
error: function() { alert('error'); }
});
});
var pack = Pack();
debugger;
});
和asp.net代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.package {width:550px;min-height:70px;padding:10px;border:1px solid #aaaaaa; position:relative; margin-top:20px; }
.package .items { min-height:70px;}
.package div label {display:inline-block; width:130px;}
.removeBox { position:absolute; right:-10px; top:-10px; border-radius:10px; width:30px; height:20px; line-height:0; background-color:Red; color:White; font-family:Arial; font-weight:bold; font-size:18px; text-align:center; border:solid 1px #600; }
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript" src="js/packman.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div id="main">
<label >
<img class="item" id="Img1" src="http://dummyimage.com/100x100/000/fff&text=Halil" draggable="true" ondragstart="drag(event)" alt="" />
<img class="item" id="Img2" src="http://dummyimage.com/100x100/000/fff&text=Figen" draggable="true" ondragstart="drag(event)" alt="" />
<img class="item" id="Img3" src="http://dummyimage.com/100x100/000/fff&text=Naz" draggable="true" ondragstart="drag(event)" alt="" />
<img class="item" id="Img4" src="http://dummyimage.com/100x100/000/fff&text=Test" draggable="true" ondragstart="drag(event)" alt="" />
<img class="item" id="Img5" src="http://dummyimage.com/100x100/000/fff&text=Huni" draggable="true" ondragstart="drag(event)" alt="" />
<img class="item" id="Img6" src="http://dummyimage.com/100x100/000/red&text=Mavi" draggable="true" ondragstart="drag(event)" alt="" />
<img class="item" id="Img0" src="http://dummyimage.com/100x100/000/fff&text=Can" draggable="true" ondragstart="drag(event)" alt="" /></label></div>
<asp:TextBox ID="packCount" runat="server" Text="1"></asp:TextBox>
<button type="button" onclick="return createPackageClick();">Create Package</button>
<asp:Button ID="createPackage" runat="server" alt="" text="postBack"/>
<div id="packages">
<div class="package" id="pack0">
<div><label>Gönderecek Depo</label><asp:DropDownList ID="shipFr" runat ="server"></asp:DropDownList>
</div>
<div><label>Teslimat Adresi</label><asp:DropDownList ID="shipTo" runat ="server"></asp:DropDownList></div>
<button class="removeBox" type="button" onclick="return deletePack(this.parentNode);">x</button>
<div class="items" ondrop="drop(event)" ondragover="allowDrop(event)"ondragstart="drag(event)"></div>
</div>
</div>
<asp:TextBox ID="TextBox1" runat="server" Text="1"></asp:TextBox>
</div>
</form>
</body>
</html>
输入图片描述
无论使用什么代码,您的问题是为什么元素确实获得相同的ID。原因如下:
cln.id = "pack" + packList.length;
"packList"在你发布的代码中没有初始化,所以我们不知道它来自哪里。但是你依赖于ID,它必须在整个页面代码中完全唯一,在"packList"的长度上,并且长度在代码中不会改变。
但是正如一些评论所说,从我们的猜测来看,这似乎不是一个好的代码。也许你想写,你想创造什么,我们可以指导你一个更好的方式:)
我很抱歉地说,但据我所知,你有一些非常神秘(或错误)的代码在那里,我不知道你是否应该从头开始…并提前阅读类、对象和变量作用域。在你的代码的第一部分,你似乎想要创建一个类"包",但据我所知,这不是一个有效的方式来写这个。
也var pkgs = document.getElementById("packages")
没有意义,因为作用域在函数内,并且在这行之后永远不会使用PKGS。
var pack=Pack();
Also make no sense and
createPackageClick()
在任何情况下都返回false,永远不会返回true或某个值。还有一些函数有时只返回值/bool,这在编程中没有意义。
如果你编辑你的问题并准确地写下你想要做的,也许我们中的一个可以给你一些提示,告诉你你需要什么。但是对于这段代码,我认为最好引用Mike C.:
基本上,你的代码是黑暗的,充满错误。
我以为会好起来的,但是没有,对不起。
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- 使用Javascript获取所选选项ID
- 根据id将json数组组合为一个json数组
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 对id以某个字符串开头的元素进行计数
- 如果元素's的ID以数字开头
- 通过id和class属性获取元素
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 使用当前日期生成随机id
- Javascript-ID冲突的几率
- Href:当前DIV中的目标ID
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- Javascript复选框函数:;缺少:在属性id之后"
- Twitter引导程序Typeahead-Id&标签
- 如何与特定ID交谈
- chart.series[id].remove()无法刷新高位图表/高位股票中其他系列的图例属性
- 如何在速度模板中获取LiferayPortlet实例id
- 谷歌地图可以't添加正确的标记ID
- 当我创建新包并添加两个或更多盒子时,所有盒子的id将与最后一个盒子的id相同