声明变量后未定义

时间:2018-02-17 02:45:29

标签: javascript html

<!DOCTYPE html>
<html>

<head>
  <meta charset=utf-8 />
  <title>moving word</title>
</head>

<body>
  <p id="word">w3resource</p>
</body>

</html>

<script type="text/javascript" src="five.js"></script>





function MovingLetters() {
  var text = document.getElementById("word").value;
  var len = text.length;
  var lastletter = text.charAt(len-1);
  text = text.substring(0,len-1);
  text = lastletter + text;
}

MovingLetters();

$(function() {
  setInterval(MovingLetters, 1000);
});

控制台告诉我:

  

无法读取未定义的属性“长度”

不知道为什么它是未定义的,因为我在那之前定义了2行,而那个反映到在js脚本运行之前运行的html代码中的<p>。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

使用value用于输入元素,您应该使用textContentinnerText或者如果您想使用html innerHTML

var text = document.getElementById("word").textContent;

function MovingLetters() {
  var word = document.getElementById("word")
  var text = word.textContent;
  var len = text.length;
  var lastletter = text.charAt(len - 1);
  text = text.substring(0, len - 1);
  text = lastletter + text;
  word.textContent = text
}

MovingLetters();
setInterval(MovingLetters, 1000);
<p id="word">w3resource</p>

答案 1 :(得分:0)

你不希望你想要的值是什么叫做innerHTML。你可以通过document.getElementById("word").innerHTML.length实现这一目标。