【问题标题】:javascript getAttribute stops the for loopjavascript getAttribute 停止 for 循环
【发布时间】:2017-02-17 09:57:39
【问题描述】:

我正在做一个只使用 JavaScript HTML 和 CSS 的刽子手游戏。 在我的一个函数中,我尝试采用一个名为:value_ 的跨度属性。 当程序到达那个点时,它只运行一次。当我单击另一个字母时,它什么也没做。如果我将 getAttribute 行放在 cmets 中,只要我点击一个字母,该函数就会运行。 有任何想法吗? :\

代码如下:

//Search and Update function after click
function search_(target, letter)
{
    for (var i = 0; i < randomWord.length; i++)
    {
        //Identify the <span>'s id by the letter
        var target_ = document.getElementById(letter + i);
        //Get the <span>'s value_
        var attr_ = target_.getAttribute('value_');
        alert(attr_);
        /*if (randomWord[i] == attr_)
        {   
          target_.className = 'hide';
        };*/
    };
};

【问题讨论】:

  • value_ 属性是否存在?我认为不会,因为它不是标准的 HTML 属性。另外span 元素没有value,请改用.textContent
  • 当我使用 textContent 时,循环仍然在第二个循环中返回 null。编辑:我给了它一个数据值属性,但同样的事情发生了。

标签: javascript html for-loop getattribute


【解决方案1】:

不太确定这是您想要的。不过可以考虑试试:

function search_(target, letter) {
    for (var i = 0; i < randomWord.length; i++) {
        var target_ = document.getElementById(i); // you're not assigning span's id by letter, so this the way to get its id
        var attr_ = target_.innerText;
        console.log(attr_); // check console log
    };
};

记住: &lt;span&gt; 元素不包含任何 value/value_ 属性。因此,要获得 &lt;span&gt; 元素的值,您应该使用 innerText 属性。

【讨论】:

  • 我也尝试过使用 innerText 、 textContent 和 innerHTML 。当循环进入下一轮时,它返回 null 并使其崩溃。
  • 那么你肯定在其他地方有错误。考虑创建一个小提琴
  • 当我只使用这部分时: function search_(target, letter) { for (var i = 0; i 的id by字母 var target_ = document.getElementById(letter + i);警报(目标_); }; };它运行所有跨度并给我警报消息。如果我尝试获取它会崩溃的值。
  • 您确定您的 ID (letter + i) 正确吗?
  • 应该不错。它通过 id 找到跨度。我正在使用codepen,你可以在那里查看。 codepen.io/fekete965/pen/ggZBQz
【解决方案2】:

好的,伙计们,我已经改变了一些功能。现在它工作正常。 感谢您的帮助!

function search_(letter)
  {
    for (var i = 0; i < randomWord.length; i++)
    {
      //Identify the guessWord <span>
      var targetNew = document.getElementById(i + '' + (randomWord.length-i));
      //Make it appear if the word contain the clicked letter
      if (targetNew.getAttribute('data-value') == letter)
      {
        targetNew.className = 'hide';
      };
    };
  };

【讨论】:

    猜你喜欢
    • 2021-04-16
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多