Javascript :: Использовать переменную как строку для идентификатора объекта и свойств; - PullRequest
0 голосов
/ 23 сентября 2018
function ftest (P1, P2) {
"use strict";

  document.getElementById(String(P1)).display = String(P2);
}

document.getElementById ( String (P1) )
использовать параметр P1 в качестве ObjectID;

display = String (P2)
используйте параметр P2 в качестве свойства ObjectStyle;

таким образом, чтобы избежать путаницы при передаче значений в рабочем процессе ::

onclick="ftest(objectname,objectproperty)"

вместо

onclick = "ftest ('objectname', 'objectproperty')"

результатом будет Object is Null или Unknown Property?
при попытке сделать вещи чистыми в htmlкод;

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Возможно, но objectproperty должно быть определено.

Что-то вроде этого:

Somewehre в сценарии (быстрое и грязное решение):

window.objectproperty = "none";

вызов:

onclick="ftest(objectId, objectproperty)"

ftest:

function ftest (P1, P2) {
  "use strict";
  P1.style.display = P2;
}
0 голосов
/ 23 сентября 2018

Вы должны создать объект, а затем передать его функции.

посмотрите на этот пример:

function ftest (obj) {
"use strict";
  document.getElementById(obj.P1).style.display = obj.P2;
}
<h1 id='test'>I Am Block</h1>
<script>
var obj = {
	P1 : 'test',
	P2 : 'inline'
}
</script>
<button onclick="ftest(obj)">Test Me</button>
0 голосов
/ 23 сентября 2018

Ты не можешь.Единственный способ сделать это:

 var objectname = "objectname";

, тогда

 ftest(objectname)

будет работать.однако, если ваша цель

, чтобы очистить код HTML-кода

, удалите встроенные списки событий и сделайте что-то вроде:

 // html
 <button id="ftest" > ftest </ button>

 // js
 const on = (selector, event, handler) => document.querySelector(selector).addEventListener(event, handler);

 on("#ftest", "click", () => ftest("objectname", "objectproperty"));
...