Javascript 使用具有不同字符串参数的onclick函数追加文本
我想在我的文档中添加一些文本,单击这些文本将启动一些具有不同字符串参数的函数 我不知道为什么以下功能不能使Javascript 使用具有不同字符串参数的onclick函数追加文本,javascript,Javascript,我想在我的文档中添加一些文本,单击这些文本将启动一些具有不同字符串参数的函数 我不知道为什么以下功能不能使onclick工作: var strings = ["string1", "string2", "string3"]; function show (s) { alert(s); } for (var i = 0; i < strings.length; i++) { var elt = document.createElement('text'); elt
onclick
工作:
var strings = ["string1", "string2", "string3"];
function show (s) {
alert(s);
}
for (var i = 0; i < strings.length; i++) {
var elt = document.createElement('text');
elt.innerHTML = strings[i];
elt.onmouseover = "";
elt.style = "cursor: pointer;";
var s = "show(" + "'" + strings[i] + "'" + ")";
elt.onclick = s;
document.body.appendChild(elt);
}
var strings=[“string1”、“string2”、“string3”];
功能表演{
警报;
}
for(var i=0;i
这是你的电话号码
另外,我想把string1
、string2
和string3
一行一行地放进去(即,在它们中间插入
),并且总是放在开始…
(我认为目前它不在这个分区中)。有人知道如何实现这一点吗?将“span”
替换为“text”
,作为.createElement()
的参数;设置elt
元素的时,在字符串[i]
之后添加“
”
;将onclick
与Function.prototype.bind()一起设置为上下文elt
,将strings[i]
作为参数设置为show
函数;创建一个引用.padding
元素的变量,以将创建的元素附加到中。padding
元素调用。appendChild()
链接到。padding
元素,而不是文档。body
var strings=[“string1”、“string2”、“string3”];
var padding=document.querySelector(“.padding”);
功能表演{
console.log(事件类型);
警报;
}
for(var i=0;i”;
elt.style.cursor=“指针”;
elt.onclick=show.bind(elt,strings[i]);
儿童教育(elt);
}
开始
将的“span”
替换为“text”
,作为.createElement()
的参数;设置elt
元素的时,在字符串[i]
之后添加“
”
;将onclick
与Function.prototype.bind()一起设置为上下文elt
,将strings[i]
作为参数设置为show
函数;创建一个引用.padding
元素的变量,以将创建的元素附加到中。padding
元素调用。appendChild()
链接到。padding
元素,而不是文档。body
var strings=[“string1”、“string2”、“string3”];
var padding=document.querySelector(“.padding”);
功能表演{
console.log(事件类型);
警报;
}
for(var i=0;i”;
elt.style.cursor=“指针”;
elt.onclick=show.bind(elt,strings[i]);
儿童教育(elt);
}
开始
var strings=[“string1”、“string2”、“string3”];
功能表演{
警报;
}
for(var i=0;i
JS-Bin
开始
var strings=[“string1”、“string2”、“string3”];
功能表演{
警报;
}
for(var i=0;i
JS-Bin
开始
收听事件的方式有多种:
- 使用事件处理程序内容属性
它们的值是一个字符串,存储在HTML内容属性中。您可以在HTML源代码中设置它们,也可以通过JavaScript通过
setAttribute
:
element.setAttribute('onclick', "show('" + strings[i] + "')");
我强烈反对使用它们。它们与eval
一样邪恶,容易受到JS注入的攻击,并且使用非常混乱的作用域运行
- 使用事件处理程序IDL属性
它们的值是函数引用。您可以将它们设置为JavaScript属性:
element.onclick = function() {
show(strings[i]);
};
它们比事件处理程序内容属性要好,但它们仍然有一个限制,即每个元素不能为同一事件拥有多个事件处理程序
- 使用事件侦听器
它们的值是函数引用。您可以使用
addEventListener
在JavaScript中将它们设置为:
element.addEventListener('click', function() {
show(strings[i]);
});
您可以添加任意数量的事件侦听器。您甚至可以使用第三个参数来说明是否希望事件侦听器在捕获阶段而不是气泡阶段运行
收听事件的方式有多种:
- 使用事件处理程序内容属性
它们的值是一个字符串,存储在HTML内容属性中。您可以在HTML源代码中设置它们,也可以通过JavaScript通过
setAttribute
:
element.setAttribute('onclick', "show('" + strings[i] + "')");
我强烈反对使用它们。它们与eval
一样邪恶,容易受到JS注入的攻击,并且使用非常混乱的作用域运行
- 使用事件处理程序IDL属性
它们的值是函数引用。您可以将它们设置为JavaScript属性:
element.onclick = function() {
show(strings[i]);
};
它们比事件处理程序内容属性要好,但它们仍然有一个限制,即每个元素不能为同一事件拥有多个事件处理程序
- 使用事件侦听器
它们的值是函数引用。您可以使用
addEventListener
在JavaScript中将它们设置为:
element.addEventListener('click', function() {
show(strings[i]);
});
您可以添加任意数量的事件侦听器。您甚至可以使用第三个参数来说明是否希望事件侦听器在捕获阶段而不是气泡阶段运行
所以onmouseover的默认值已经是空的,对吗?@SoftTimur“所以onmouseover的默认值已经是空的