【问题标题】:javascript setAttribute 'className' works onLoad, but not onClickjavascript setAttribute 'className' 适用于加载,但不适用于 onClick
【发布时间】:2011-04-07 13:25:32
【问题描述】:

为什么以下内容适用于 onLoad 而不是 onClick,解决方案是什么? 提前谢谢...

<head>
    <title>Untitled Page</title>
    <LINK href=CSS/showdetails.css type=text/css rel=stylesheet />
</head>
<body OnLoad="javascript:showdetails()">

<script language=JavaScript src=js/showdetails.js type=text/javascript></script>

<div id="divResults" style="OVERFLOW: auto; HEIGHT: 480px;">
<span id="ShowResults" style="VISIBILITY: hidden">Display Results</span>
<p><input id="Button1" type="button" value="button" /></p>
</div>

<script type="text/javascript">

var btn = document.getElementById('Button1');
btn.onclick = function() {showdetails();};

function showdetails() {
    var xc = document.getElementById('ShowResults');

    var top_ul = document.createElement('ul');
    top_ul.setAttribute('className','detclass');


    var li1 = document.createElement('li');
    li1.appendChild(document.createTextNode('craig'));


    var ul2 = document.createElement('ul');
    var li2 = document.createElement('li');
    li2.appendChild(document.createTextNode('Mike'));

    ul2.appendChild(li2);


    li1.appendChild(ul2);
    top_ul.appendChild(li1);

    xc.appendChild(top_ul);

    var vis = "visible";
    xc.style.visibility = vis;
    }
</script>                 
</body>
</html>

【问题讨论】:

  • 下次请使用code标签,更容易阅读。
  • 将脚本放在底部,就在

标签: javascript events dom


【解决方案1】:

此脚本在您的文档中的什么位置?执行此脚本时,是否可能尚未加载包含 Button1 的 DOM 元素?您可以尝试将其放在您的身体之后的脚本标签中,而不是在您的头脑中,或者将其包装在一个函数中,然后在一个 onload 元素中执行。

编辑:现在问题有代码标签,我可以看到它在脚本标签中。我仍然建议将其包装在一个函数中并使用 onLoad 调用,以确保在执行脚本之前 DOM 已完全加载。

【讨论】:

  • 对不起,我写上面的时候显示的是没有代码标签的版本,所以我没有看到你放在哪里。我撤回我的问题。
猜你喜欢
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 2015-08-07
  • 2020-10-08
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多