2010-06-16 76 views
1
function main(){ 

var delImage=document.createElement("img"); 
delImage.setAttribute("alt","Edit"); 
delImage.setAttribute("src","drop.png"); 

var position=newRow.rowIndex; 
var typeElem=document.createElement("a"); 
typeElem.setAttribute("name","delete"); 
typeElem.setAttribute("href","#"); 
typeElem.appendChild(delImage); 
typeElem.setAttribute('onclick',"delete(position)"); 

newRow.insertCell(lastCell).appendChild(typeElem); 

} 

function delete(pos){ 
alert(pos); 
} 

当锚点标记被点击时,我无法调用删除功能...我想要改变什么来实现这个功能?javascript:定位标记问题

回答

0

尝试

typeElem.onclick = function(){ 
    delete(position); 
}; 

,并更好地使用像deletePosition更有意义的名称或类似的东西

0

尝试改变:

typeElem.setAttribute('onclick',"delete(position)"); 

typeElem.setAttribute('onclick',"delete(" + position + ")"); 
+0

感谢汤姆和拉胡尔·汤姆的答案完全吻合我的recquirement – Raam 2010-06-16 13:11:27

+0

为什么我们可以传递一个值这样的,而不是基本的方法是什么?如果我想传递一个值,这样意味着/ *位置= 1 + “RAAM”; * /(postion = 1raam)..怎么可以这个?谢谢。 – Raam 2010-06-21 13:11:03

+0

我们没有像这样传递一个值,我们正在获取变量的字面值并将其赋值给属性函数调用,如果这是有道理的话。很难解释,也许别人可以做得更好。 – 2010-06-22 00:05:16

0

IE处理setAttribute与其他浏览器有所不同,特别是事件处理程序属性。出于这个原因,为了更整洁的代码,避免使用setAttribute更容易,其中DOM属性已经存在,通常在浏览器中统一工作。另外,避免使用JavaScript中的运算符命名的函数。特别是在这种情况下,我会重命名delete()函数。

function main() { 
    var delImage = document.createElement("img"); 
    delImage.alt = "Edit"; 
    delImage.src = "drop.png"; 

    var position = newRow.rowIndex; 
    var typeElem = document.createElement("a"); 
    typeElem.name = "delete"; 
    typeElem.href = "#"; 
    typeElem.appendChild(delImage); 
    typeElem.onclick = function() { 
     doDelete(position); 
    }; 
    newRow.insertCell(lastCell).appendChild(typeElem); 
    typeElem = null; 
} 

function doDelete(pos){ 
    alert(pos); 
}