Javascript ::使用变量作为对象ID和属性的字符串;

时间:2018-09-23 09:57:10

标签: javascript string variables properties objectid

function ftest (P1, P2) {
"use strict";

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

document.getElementById(字符串(P1)
使用参数P1作为ObjectID;

display = 字符串(P2)
使用参数P2作为ObjectStyle属性;

这种在工作流程中传递值时避免混乱的方式:

onclick="ftest(objectname,objectproperty)"

代替

  

onclick =“ ftest('objectname','objectproperty')”

结果将是 对象是空值还是未知属性?
试图使HTML代码变得整洁的时候;

3 个答案:

答案 0 :(得分:1)

你不能。唯一的方法是:

 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"));

答案 1 :(得分:0)

可以,但是应该定义 objectproperty

类似的东西:

脚本中有一些内容(快速而肮脏的解决方案):

window.objectproperty = "none";

致电:

onclick="ftest(objectId, objectproperty)"

ftest:

function ftest (P1, P2) {
  "use strict";
  P1.style.display = P2;
}

答案 2 :(得分:0)

您必须创建对象,然后将其传递给函数。

看这个例子:

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>