Нахождение индекса узла DOM

Если вам абсолютно нужна локальная копия файла, вам нужно будет открыть InputStream копию содержимого в локальный файл, в котором вы знаете путь, а затем перейти оттуда. Sidenote: Guava ByteStreams#copy - это простой способ выполнить это.

Конечно, этот файл больше не поддерживается исходным источником Uri, поэтому я не думаю, что это то, что вы хотите. Вместо этого вы должны работать с API-интерфейсом Uri. Взгляните на Storage Access Framework

Изменить

Вот как вы можете получить InputStream из вашего Uri

InputStream inputStream = getContentResolver().openInputStream(uri);

59
задан Marc Gravell 14 July 2009 в 22:20
поделиться

4 ответа

Немного короче, ожидает, что элемент будет в элементе, k возвратов.

for (var k=0,e=elem; e = e.previousSibling; ++k);

После комментария от Justin Dearing я рассмотрел свой ответ и добавил следующее:

Или если Вы предпочитаете "в то время как":

var k=0, e=elem;
while (e = e.previousSibling) { ++k;}

исходный вопрос состоял в том, как найти индекс существующего элемента DOM. Оба из моих примеров выше в этом ответе ожидают элемент быть элементом DOM и что элемент все еще существует в DOM. Они перестанут работать, если Вы дадите им несуществующий объект или объект, которые не имеют previousSibling. Более надежный путь был бы чем-то вроде этого:

var k=-1, e=elem;
while (e) {
    if ( "previousSibling" in e ) {
        e = e.previousSibling;
        k = k + 1;
    } else {
        k= -1;
        break;
    }
}   

, Если e пустой указатель или если previousSibling отсутствует в одном из объектов, , k -1.

23
ответ дан Community 24 November 2019 в 18:13
поделиться

Ответ RoBorg работает..., или Вы могли попробовать...

var k = 0;
while(elem.previousSibling){
    k++;
    elem = elem.previousSibling;
}
alert('I am at index: ' + k);
4
ответ дан scunliffe 24 November 2019 в 18:13
поделиться

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

var K = -1;
for (var i = myNode.parent.childNodes.length; i >= 0; i--)
{
    if (myNode.parent.childNodes[i] === myNode)
    {
        K = i;
        break;
    }
}

if (K == -1)
    alert('Not found?!');
0
ответ дан Greg 24 November 2019 в 18:13
поделиться

используя фреймворк наподобие прототипа, вы можете использовать это:

$(el).up().childElements().indexOf($(el))
0
ответ дан 24 November 2019 в 18:13
поделиться