从innerHTML接近this.form

时间:2014-01-08 18:46:13

标签: javascript html

我在处理调用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。感谢。

3 个答案:

答案 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'