访问函数中的变量以获取不同的函数 - Javascript

时间:2015-10-25 08:49:18

标签: javascript

这似乎是一个重复的问题,在某种程度上,它是,但我已经经历过许多类似的问题,遗憾的是,没有一个能满足我的需要。我非常感谢特定问题的建议。

我在JavaScript代码中的主要问题是我无法从函数ReadMoreLessText访问函数TextLimiter中的变量RememberText20和RememberFullText中的值。 “Message”是ReadMoreLessText函数的一个参数,它基本上匹配上述变量中​​单击的正确值的元素,这些变量本身就是数组。

*我知道数组本身没有任何问题,因为它们保留了它们应有的值,因为一个简单的alert()证明了这一点。类似地,Message参数没有任何问题,因为函数ReadMoreLessText可以与其他值一起使用。

我的简单问题是我无法从ReadMoreLessText函数访问上述变量中​​的值,尽管它们应该是全局变量。

我非常感谢这里特定于问题的答案。提前谢谢。

// JavaScript Document

//Start Text250

window.onload = function TextLimiter() {
  for (y = 0; y < 6; y++) {
    FullText = document.getElementsByClassName("Introduction")[y].innerHTML;
    TextLength = FullText.length;
    RememberFullText = [];
    RememberFullText[y] = FullText;
    var Text250 = FullText.substr(0, 250) + "...";
    RememberText250 = [];
    RememberText250[y] = Text250;
    if (TextLength > 250) {
      document.getElementsByClassName("Read_More")[y].innerHTML = "Read More→";
      document.getElementsByClassName("Introduction")[y].innerHTML = Text250;
    } else {
      document.getElementsByClassName("Read_More")[y].innerHTML = "";
    }
  }
};

//End Text250


//Start ReadMoreLessText

var ReadMore = function(Message) {
  var ScreenText = document.getElementsByClassName("Introduction")[Message].innerHTML;
  if (ScreenText === RememberText250[Message]) {
    document.getElementsByClassName("Introduction")[Message].innerHTML = RememberText250[Message];
  } else {
    document.getElementsByClassName("Introduction")[Message].innerHTML = RememberText250[Message];
  }
};

//End ReadMoreLessText

2 个答案:

答案 0 :(得分:0)

我没有看到你的变量被声明为全局变量。你有var RememberText20, RememberFullText;以外的任何功能吗?

答案 1 :(得分:0)

尝试在封闭的RememberFullText循环之外定义RememberText250for

window.onload = function TextLimiter() {
    RememberFullText = [];
    RememberText250 = []
    for (y = 0; y < 6; y++) {
       ...

如上所述,它们在循环的每次迭代中都设置为空数组。因此,在循环结束后,只保留每个数组的最后一个条目。