JS DOM getAttribute()

时间:2016-06-01 14:36:36

标签: javascript dom

我正在尝试使用DOM和JS获取属性值,但我无法使代码运行。为什么呢?

<!DOCTYPE html>
<HTML>
  <HEAD>
    <SCRIPT>

      var x = document.getElementById("sw").getAttribute("src");
      alert("src "+ x);

      document.getElementById("sw").innerHTML ="src "+ x;
    </SCRIPT>
  </HEAD>

  <BODY>
    <FORM>
      <IMG id="sw" src="photo.jpg"/>
    </FORM>
  </BODY>
</HTML>

2 个答案:

答案 0 :(得分:1)

HTML(DOM)的标签尚未加载,但在执行JS代码时尚未出现。这就是为什么你需要将你移到HTML代码之下的原因:

<!DOCTYPE html>
<HTML>
<HEAD>

</HEAD>

<BODY>
<FORM>
<IMG id="sw" src="photo.jpg"/>
<SCRIPT>

var x = document.getElementById("sw").getAttribute("src");
alert("src "+ x);

document.getElementById("sw").innerHTML ="src "+ x;
</SCRIPT>
</BODY>
</HTML>

或者您需要在DOMLoaded事件上添加事件句柄,如下所示:

   <SCRIPT>
document.addEventListener("DOMContentLoaded", function(event) { 

    var x = document.getElementById("sw").getAttribute("src");
    alert("src "+ x);

    document.getElementById("sw").innerHTML ="src "+ x;
});
</SCRIPT>

答案 1 :(得分:1)

你正在尝试获取尚未加载的元素的属性尝试将你的js置于就绪函数中,因此它将在DOM元素存在之后触发:

document.addEventListener('DOMContentLoaded', function() {
    var x = document.getElementById("sw").getAttribute("src");
    alert("src "+ x);

    document.getElementById("sw").innerHTML ="src "+ x;
});

或者您可以将<script>代码放在结束标记</body>之前。

希望这有帮助。

<!DOCTYPE html>
<HTML>
  <HEAD>
    <SCRIPT>
      document.addEventListener('DOMContentLoaded', function() {
        var x = document.getElementById("sw").getAttribute("src");
        alert("src "+ x);

        document.getElementById("sw").innerHTML ="src "+ x;
      });
    </SCRIPT>
  </HEAD>

  <BODY>
    <FORM>
      <IMG id="sw" src="photo.jpg"/>
    </FORM>
  </BODY>
</HTML>