2013-10-12 61 views
-2
I have this script: 

<script> 

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

function aler() 
{ 
    alert(prop); 
} 
</script> 

进出脚本标签:变量未定义使用时警报()

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

有人能向我解释为什么当我按一下按钮,它说:“未定义”

更正: 在div中拖动图片:

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

例如。

回答

4

div1的第一个孩子是一个文本节点。它没有ID。

编辑

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

<div id="div1"> 
    <img id="C" etc.> 
</div> 

因为文本包含制表符,空格和回报。我不确定拖/放是如何影响的。

+0

function passName(locationID) { \t el1 = document.getElementById('div1')。firstChild.getAttribute(“id”); \t \t el2 = document.getElementById('div2')。firstChild.getAttribute(“id”); \t locationID.innerHTML = el1 +“and”+ el2; \t alert(el1); \t } 这是一个函数,el1和el2被定义为prop变量。但是,当我提醒他们,一个值显示......并对大量的更正感到抱歉 - 我无法解释很好...... – user2874096

0

document.getElementById('div1').firstChild是文字some content。当您拨打getAttribute("id")时,由于纯文本没有id,您将获得undefined

+0

好吧,稍微修正 - 拖动和drob操作后,有一个图像在DIV: – user2874096

1

DOM中,有各种“节点”。您的<div id="div1">some content</div>标记定义了两个节点:Element这是一个div及其第一个(也是唯一)子节点,Text节点包含您在div中的文本。 Text节点没有iddiv元素有一个id,但文本节点没有。