Javascript 使用alert()时未定义变量 我有这个脚本: var prop=document.getElementById('div1').firstChild.getAttribute(“id”); 函数aler() { 警报(道具); }

Javascript 使用alert()时未定义变量 我有这个脚本: var prop=document.getElementById('div1').firstChild.getAttribute(“id”); 函数aler() { 警报(道具); },javascript,Javascript,在脚本标记之外: I have this script: <script> var prop = document.getElementById('div1').firstChild.getAttribute("id"); function aler() { alert(prop); } </script> 一些内容 有人能给我解释一下为什么当我点击按钮时会显示“未定义”吗 更正: 在div中,我拖动了一张图片: <div id="div1">

在脚本标记之外:

I have this script:

<script>

var prop = document.getElementById('div1').firstChild.getAttribute("id");

function aler()
{
    alert(prop);
}
</script>
一些内容
有人能给我解释一下为什么当我点击按钮时会显示“未定义”吗

更正: 在div中,我拖动了一张图片:

<div id="div1">some content</div>
<button onclick="aler()"></button>


例如。

div1的第一个子节点是文本节点。它没有身份证

编辑

至于您的更正,如果生成的HTML看起来像这样,那么第一个子节点仍然是文本节点:

  <img  id="C" src="C.png"  draggable="true" ondragstart="drag(event)" width="91px" height="91px">


因为文本包括制表符、空格和返回。我不确定拖放操作是如何影响这一点的。

document.getElementById('div1')。firstChild
是文本
某些内容
。当你在上面调用
getAttribute(“id”)
时,由于纯文本没有
id
,你将得到
未定义的

,其中有各种各样的“节点”。你的
一些内容
标记定义了两个节点:一个
div
,以及它的第一个(也是唯一的)子节点,包含
div
中的文本的节点。
Text
节点没有
id
div
元素有一个
id
,但是文本节点没有。

好的,稍作修改-在拖放操作之后,div中有一个图像:function passName(locationID){el1=document.getElementById('div1').firstChild.getAttribute(“id”);el2=document.getElementById('div2').firstChild.getAttribute(“id”);locationID.innerHTML=el1+”和“+el2;alert(el1);}这是一个函数,而el1和el2的定义与prop变量类似。但当我提醒他们时,会显示一个值。。。很抱歉有这么多的更正-我无法很好地解释。。。
<div id="div1">
    <img  id="C" etc.>
</div>