Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用具有不同字符串参数的onclick函数追加文本_Javascript - Fatal编程技术网

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的默认值已经是空的