如何测试标签的价值

时间:2016-12-07 13:40:12

标签: javascript html

我有一份新闻列表,我可以修改新闻。当我修改一个她留在她的初始位置(如果她在第5位,她留在这里)。但是当我点击"修改这个新的"一个表单弹出到页面底部,然后当我提交修改时,我想滚动到这个修改过的新。要做到这一点,我会使用像

这样的东西
find position where label.text() == titleModified

然后我可以做

window.scrollTo(0,result of the line above);

目前我尝试document.getElementById,但它总是把我带到页面顶部......

感谢您帮助我 PS:有关Plunker的链接,可以看到新闻的结构:https://plnkr.co/edit/mLCxPYaBR56KkEOLNF8F?p=preview

这是我修改的JS:

 'submit .modifyArticle'(event) {
  event.preventDefault();

  const target = event.target;
  const textModif = target.textModif.value;
  const titreModif = target.titreModif.value;
  const photoModif = target.photoModif.value;
  const idModif = Session.get('idTemp');

  //test if values from the from are not empty or whitespaced
  if ((/\S/.test(textModif))||(/\S/.test(titreModif))) {
  console.log("2ème étape: dans body.js -> submit .modifyArticle");
  Meteor.call('articles.modify',idModif,textModif,titreModif,photoModif);
  Session.set('wantModif',false);


//here my new is modified so I want to scroll to her




//var titreModified actually contains the title after the modification but only for the first new...
  setTimeout(function(){
  var titreModified = document.getElementById("titreArticle");
  var position = titreModified.offsetTop;
  console.log("Y: " + position);
  console.log("var titreArticleModif: "+ titreModified.textContent);
}, 50)

[...]

编辑(我将解决方案放在这里,但真正的英雄是@ alexr101):首先我必须在我的标签<label class="titreArticle">{{titre}}</label>上添加一个类   那么这就是JS:

`setTimeout(function(){
  $('.titreArticle').each(function(i, obj) {
      if(obj.textContent.includes(titreModif)){
          alert("le titre devrait être: " + obj.textContent);
          var position = obj.offsetTop;
          window.scrollTo(0,position);
          return false;
      }
  });
}, 20)`

超时在这里,因为它不是100%实时,我不得不等到新标题放入DOM。

1 个答案:

答案 0 :(得分:0)

尝试获取元素的y位置:

//get modified element
var titleModified = document.getElementById("modifiedElement");

//get y position of element through offsetTop function
var yPosition = titleModified.offsetTop;

//Set scroll amount
window.scrollTo(0, yPosition );

那会有用吗?