我在处理调用this.form
的函数时遇到问题。
以下是我的源代码部分:
searchResult.innerHTML += "<td><div class=\"searchcard\" draggable=\"true\" ondragstart=\"isexc=0; clickselect("
searchResult.innerHTML += i
searchResult.innerHTML += "); setformparam(this.form); onDragStart(event)\"
当我开始拖动setformparam(this.form)
脚本中构建的div
框时,我尝试执行innerHTML
,但它不起作用。
像isexc=0, clickselect(i)
这样的任何其他功能运作良好。
请教我如何从内部JavaScript中访问this.form
。感谢。
答案 0 :(得分:1)
这是创造元素的可怕方式。使用DOM:
var cell = document.createElement("td");
var searchCard = document.createElement("div");
searchCard.className = "searchcard";
searchCard.draggable = true;
(function(i) {
searchCard.addEventListener("dragstart", function(e) {
isexc = 0;
clickselect(i);
setformparam(someForm);
onDragStart(e);
}, false);
})(i); // I’m just assuming `i` here is a loop variable of some kind
// You should probably use Array.prototype.forEach
cell.appendChild(searchCard);
searchResult.appendChild(cell);
使用事件委托并停止使用全局变量。这里有很多东西可以清理,但你应该尝试Code Review。
答案 1 :(得分:0)
我不确定这是否是您要求的,但是如果您想将表单元素作为DOM对象,您可以为元素设置id并通过 getElementById 调用它。
或者你可以通过 document.getElementsByTagName(“form”)[x] 得到它,其中x是你想要的表格的索引。
答案 2 :(得分:-2)
试
$(this).children('form')
而非'this'