我有新闻列表,我可以修改新闻。当我修改一个人时,她呆在自己的位置(如果她在第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中。
尝试将元素的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 );
那会起作用吗?