js对话框弹出问题

tcrct 2008-02-12 10:27:16
function createTags(){
var li = document.createElement("li");
var a = document.createElement("a");
var len = document.getElementsByTagName("a").length;
a.id = "a"+len;
a.innerText = "new tag";
a.onclick= "addTags(this)";
a.ondbclick = "removeTags(this)";
a.href="javascript:void(0)";
li.appendChild(a);
document.getElementById("tagDiv").appendChild(li);
}

function removeTags(obj){
var aid = obj.id;
alert(document.getElementById(aid));
}


这里弹出对话框,应该是弹出一个[object]才对的,但是这里弹出的对话框是javascript:void(0),我试过将a.href这段话删了,还是不能,请问这是为什么呢?如何解决这个问题.谢谢
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yixianggao 2008-02-12
  • 打赏
  • 举报
回复
考虑到兼容性,更新一下,IE6sp1,FF2测试可用!

L@_@K
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="Gao YiXiang" />
<meta name="email" content="yixianggao@126.com" />
<meta name="keywords" content="javascript dhtml dom" />
<meta name="description" content="I love web development." />
</head>
<body>
<div id="tagDiv"></div>
<script type="text/javascript">
<!--
function createTags()
{
var li = document.createElement("li");
var a = document.createElement("a");
var len = document.getElementsByTagName("a").length;
a.id = "a"+len;
a.innerHTML = "new tag"; // innerText 在 FF 下无效!
// Error!
//a.onclick = "addTags(this)";
// Correct!
a.ondblclick = function()
{
removeTags(this);
};
a.href = "javascript:void(0)";
li.appendChild(a);
document.getElementById("tagDiv").appendChild(li);
}

function removeTags(obj)
{
alert(obj.id);
alert(typeof obj);

var oDiv = document.getElementById("tagDiv");
alert(typeof oDiv);
}

createTags();
//-->
</script>
</body>
</html>
yixianggao 2008-02-12
  • 打赏
  • 举报
回复
alert(document.getElementById(aid));
// 这种写法本身就有问题,要获取类型须使用typeof关键字!
// 若直接调用时会调用对象自身的toString方法,IE下一般返回[object],而a是个特例,
// IE下a被重写了toString方法,返回的是href属性值!因此才会看到javascript:void(0)

L@_@K
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta name="generator" content="editplus" />
<meta name="author" content="Gao YiXiang" />
<meta name="email" content="yixianggao@126.com" />
<meta name="keywords" content="javascript dhtml dom" />
<meta name="description" content="I love web development." />
</head>
<body>
<div id="tagDiv" class=""></div>
<script type="text/javascript">
<!--
function createTags()
{
var li = document.createElement("li");
var a = document.createElement("a");
var len = document.getElementsByTagName("a").length;
a.id = "a"+len;
a.innerText = "new tag";
// Error!
//a.onclick = "addTags(this)";
// Correct!
a.ondblclick = function()
{
removeTags(this);
};
a.href = "javascript:void(0)";
li.appendChild(a);
document.getElementById("tagDiv").appendChild(li);
}

function removeTags(obj)
{
alert(obj.id);
alert(typeof obj);

var oDiv = document.getElementById("tagDiv");
alert(typeof oDiv);
}

createTags();
//-->
</script>
</body>
</html>
daniel_kaka 2008-02-12
  • 打赏
  • 举报
回复
这个要用事件拦截,修改<a href=''>的默认行为,改为a.href="javascript:addTags(this);";
jiewenxu 2008-02-12
  • 打赏
  • 举报
回复
直接alert(obj)就可以了
干嘛还要先去ID,再重新通过此ID获得原来的对象呢?

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧