Добраться затем / предыдущий элемент с помощью JavaScript?

Добро пожаловать в Переполнение стека. Вы действительно можете использовать списки для хранения ускорения, скорости и положения:

import matplotlib.pyplot as plt

g=9.8
coeff=0.0001
tstep=0.9

acc=0
vel=0
pos=30000

acceleration=[acc]
velocity=[vel]
position=[pos]

while pos>=0:

    acc=g-coeff*(vel**2)
    acceleration.append(acc)   

    pos=pos-vel*tstep
    position.append(pos)   

    vel=vel+acc*tstep  
    velocity.append(vel)

plt.plot(velocity)
plt.xlabel('time [s]')
plt.ylabel('velocity [m/s]')   

В приведенном выше примере кода я умножил квадрат скорости на произвольный коэффициент, так как я не знал, какое значение вы хотите использовать для массы м.

Несколько замечаний:

  • По моему мнению, нет необходимости принимать абсолютное значение скорости в выражении ускорения. Скорость должна быть больше или равна нулю, поэтому вы должны иметь V = abs (V).
  • Нет необходимости определять и обновлять время T здесь, так как вы не используете его позже в своем коде.

Надеюсь, это поможет.

98
задан informatik01 6 February 2018 в 14:54
поделиться

3 ответа

Хорошо в чистом JavaScript мои взгляды состоят в том, что необходимо было бы сначала сопоставить их в наборе.

var divs = document.getElementsByTagName("div");
//divs now contain each and every div element on the page
var selectionDiv = document.getElementById("MySecondDiv");

Так в основном с selectionDiv выполняют итерации через набор для нахождения его индекса, и затем очевидно-1 = предыдущие +1 = затем в границах

for(var i = 0; i < divs.length;i++)
{
   if(divs[i] == selectionDiv)
   {
     var previous = divs[i - 1];
     var next = divs[i + 1];
   }
}

знать, хотя, поскольку я говорю, что дополнительная логика потребовалась бы, чтобы проверять, что Вы в границах т.е. Вы не в конце или запускаетесь набора.

Это также будет означать, что говорят, что у Вас есть отделение, которому вложили дочернее отделение. Следующее отделение не было бы одноуровневым элементом, но ребенком, Поэтому если Вы только хотите одноуровневые элементы на том же уровне, как целевое отделение затем определенно использует nextSibling проверка свойство tagName .

26
ответ дан REA_ANDREW 24 November 2019 в 05:08
поделиться

используйте nextSibling и previousSibling свойства:

<div id="foo1"></div>
<div id="foo2"></div>
<div id="foo3"></div>

document.getElementById('foo2').nextSibling; // #foo3
document.getElementById('foo2').previousSibling; // #foo1

Однако в некоторых браузерах (я забываю, который) также необходимо проверить на узлы комментария и пробел:

var div = document.getElementById('foo2');
var nextSibling = div.nextSibling;
while(nextSibling && nextSibling.nodeType != 1) {
    nextSibling = nextSibling.nextSibling
}

Библиотеки как jQuery обрабатывают все эти проверки перекрестного браузера на Вас из поля.

229
ответ дан WD40 24 November 2019 в 05:08
поделиться

Действительно зависит от полной структуры Вашего документа.

, Если Вы имеете:

<div></div>
<div></div>
<div></div>

это может быть столь же просто как пересекающий посредством использования

mydiv.nextSibling;
mydiv.previousSibling;

Однако, если 'следующее' отделение могло бы быть где-нибудь в документе, Вам будет нужно более сложное решение. Вы могли попробовать что-то с помощью

document.getElementsByTagName("div");

и пробежав их для получения, где Вы хотите так или иначе.

, Если бы Вы делаете большой сложный пересекающий DOM, такой как это, я рекомендовал бы изучить библиотеку, такую как jQuery.

25
ответ дан John R Perry 24 November 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: