Почему я не могу использовать один код JavaScript много раз в одном HTML-файле?

Обратите внимание, что есть случаи, когда вы определили свой собственный пользовательский класс и хотите сохранить атрибуты, тогда вы должны использовать copy.copy() или copy.deepcopy(), а не альтернативы, например, в Python 3:

import copy

class MyList(list):
    pass

lst = MyList([1,2,3])

lst.name = 'custom list'

d = {
'original': lst,
'slicecopy' : lst[:],
'lstcopy' : lst.copy(),
'copycopy': copy.copy(lst),
'deepcopy': copy.deepcopy(lst)
}


for k,v in d.items():
    print('lst: {}'.format(k), end=', ')
    try:
        name = v.name
    except AttributeError:
        name = 'NA'
    print('name: {}'.format(name))

Выходы:

lst: original, name: custom list
lst: slicecopy, name: NA
lst: lstcopy, name: NA
lst: copycopy, name: custom list
lst: deepcopy, name: custom list
-1
задан Faizan Khan 24 March 2019 в 05:20
поделиться

3 ответа

Причина, по которой он не работает, когда вы помещаете этот код в несколько мест в одном и том же HTML-файле, заключается в том, что когда у вас есть одна форма с именем randform, она возвращает эту форму. Но так как у вас есть несколько форм с одним и тем же именем randform. document.randform теперь возвращает массив формы.


Это быстрое решение (возможно, не рекомендуемый способ).

...
<input
  class="reload-but"
  type="button"
  value="↻ "
  onClick="randomString(this);"
>
...
function randomString(input) {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var string_length = 8;
    var randomstring = '';
    for (var i=0; i<string_length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum,rnum+1);
    }

    // no longer rely on the form name.
    input.parentElement.randomfield.value = randomstring;
}
0
ответ дан invisal 24 March 2019 в 05:20
поделиться

У меня нет проблем с этим. Удалите закрытие div, которое не нужно в этом контексте, и разделите ваш html и javascript, поскольку это, как правило, хорошая практика

function randomString() {
  var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
  var string_length = 8;
  var randomstring = '';
  for (var i = 0; i < string_length; i++) {
    var rnum = Math.floor(Math.random() * chars.length);
    randomstring += chars.substring(rnum, rnum + 1);
  }
  document.randform.randomfield.value = randomstring;
}
<form name="randform">
  <input class="reload-but" type="button" value="↻ " onClick="randomString()">&nbsp;
  <div class="unnec">
    <input class="random-but" type="button" name="randomfield" value="">
</form>

0
ответ дан Matt-the-Marxist 24 March 2019 в 05:20
поделиться

Я решил сам, просто изменил имя js function и имя form в Html на другое, а не на то, что я использовал раньше!

0
ответ дан 24 March 2019 в 05:20
поделиться
Другие вопросы по тегам:

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