Это можно сделать эффективным способом, используя индексы, где значения меняются:
x <- c(1,0,0,0,1,2,1,0,0,1,1)
Найти, где значения меняются:
diffs <- x[-1L] != x[-length(x)]
Получить индексы, а затем получить разницу в последующих индексах:
idx <- c(which(diffs), length(x))
diff(c(0, idx))
Вместо того, чтобы пытаться нажать значение на this
, вы можете использовать функцию setAttribute
:
<a onclick="this.setAttribute('dialog', 'anything');">anythingAlso</a>
Изменение элемента href
элемента работает, потому что поведение по умолчанию (по ссылке) по-прежнему соблюдается.
Атрибут, который вы ввели, dialog
, не влияет на поведение по умолчанию. Щелчок по ссылке все равно приведет к тому, что браузер выполнит ее href
.
Если вы хотите изменить поведение ссылки и открыть клик какого-то диалога, вам нужно сделать намного больше, чем просто присвойте значение случайному свойству элемента. Вы должны подавить значение по умолчанию и определить свой собственный внутри обработчика событий.
Используйте DOM для доступа к атрибутам HTML
element.hasAttribute('foo'); element.getAttribute('foo'); element.setAttribute('foo', value); element.removeAttribute('foo');
this.dialog = 'foo'
иthis.setAttribute('dialog', 'foo')
принципиально идентичны с точки зрения JavaScript, а использованиеsetAttribute
не приводит к тому, что этот код ведет себя по-другому. По-прежнему нет способа, которым этот код будет вызывать диалог при нажатии ссылки. – meagar♦ 13 July 2018 в 13:04this.dialog
иthis.setAttribute
не обрабатываются одинаково: plnkr.co/edit/HQagBZrEfAAsleJ7IMqu?p=preview – Alex Boyle 13 July 2018 в 13:29