Я работаю с файлом svg, в котором есть несколько текстовых элементов. Все текстовые элементы являются числами. Я могу получить список значений и поместить их в массив с помощью следующей строки кода.
var fretdata = document.getElementById("fretinformation").getElementsByTagName("text");
Я могу получить доступ к свойству .length
, а также получить доступ к элементам массива по индексу, например [0].textContent
. Однако, когда я пытаюсь использовать функцию .indexOf()
для массива, я получаю сообщение об ошибке, что объект (мой массив) не поддерживает свойство или метод indexOf.
Я могу настроить цикл for для итерации по массиву, проверяя каждое значение в поисках наличия или отсутствия определенного значения. Я хотел бы что-то с простотой функциональности indexOf, которая сообщает мне, присутствует ли что-то в массиве и где оно находится, если оно присутствует. Есть ли способ заставить .indexOf()
работать с массивом текстовых элементов svg? Или есть аналогичная альтернатива, не требующая использования циклов и флагов?
Я думаю, проблема заключается в том, что у меня есть массив текстовых элементов, а не массив строк. Но я не уверен, как напрямую получить массив текстового элемента textContent
var fretdata = document.getElementById("fretinformation").getElementsByTagName("text");
//var fretdata = document.getElementById("fretinformation").getElementsByTagName("text").textcontent;
//18th fret is the upper fret limit
//0 fret (open string) is the lower fret limit
//var zerolocation=fretdata.indexOf("0");
for (fd=0;fd<fretdata.length;fd++){
if(fretdata[fd].textContent=="0"){
document.getElementById("downkey").setAttribute("onclick",null);
document.getElementById("downkey").getElementsByTagName("polygon")[0].style.fill="#D3D3D3";
}
}
Итерация в цикле работает. Две строки, закомментированные с помощью .indexOf, этого не делают. Спасибо, --Christopher