Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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函数的发送者?_Javascript_Onmouseover - Fatal编程技术网

如何知道javascript函数的发送者?

如何知道javascript函数的发送者?,javascript,onmouseover,Javascript,Onmouseover,在HTML中,我有一些图像和一个javascript函数 <img onmouseover="repl()" class="EN" ... /> <img onmouseover="repl()" class="FR" ... /> ... ... 当用户在图像上时。我想根据所选语言更改标题文本 我需要一种在javascript中“引用”函数发送者的方法。 但我不知道,因为我已经多年没有使用javascript了。请帮帮我 function repl() {

在HTML中,我有一些图像和一个javascript函数

<img onmouseover="repl()" class="EN" ... />
<img onmouseover="repl()" class="FR" ... />
...

...
当用户在图像上时。我想根据所选语言更改标题文本

我需要一种在javascript中“引用”函数发送者的方法。 但我不知道,因为我已经多年没有使用javascript了。请帮帮我

function repl() {

    // Missing Solution 
    // var lang = sender.attr("class"); <= Please correct me

    var headerText = "";
    if (lang == 'FR') {
        headerText = "Cliquez sur le drapeau"
    } else {
        headerText = "Click on flag"
    }
函数repl(){
//漏解

//var lang=sender.attr(“class”);
var lang=this.getAttribute(“class”);


您应该使用“数据语言”属性。

首先,您需要将发送者发送到您的函数:

<img onmouseover="repl(this)" class="EN" ...

最好的解决方案是使用绑定事件。将所有图像设为同一类,选择它们,然后添加事件。我还建议使用来存储语言

<img class="repl" data-lang="EN" ... />
<img class="repl" data-lang="FR" ... />

然后在JavaScript中:

window.onload = function(){// Make sure DOM is ready
    // Get the images
    var imgs = document.getElementsByClassName('repl');

    // Loop over them
    for(var i = 0, len = imgs.length; i < len; i++){
        // Add the event
        imgs[i].addEventListener('mouseover', function(){
            // Get the language. "this" is the element we hovered over
            var lang = this.getAttribute('data-lang');

            var headerText = "";
            if (lang == 'FR') {
                headerText = "Cliquez sur le drapeau"
            } else {
                headerText = "Click on flag"
            }
        });
    }
};
window.onload=function(){//确保DOM已准备就绪
//获取图像
var imgs=document.getElementsByClassName('repl');
//绕过去
对于(变量i=0,len=imgs.length;i

演示:

但您从未设置
lang
。?将导航器语言作为默认语言是一个好主意。我记住了这一点。谢谢,我从未使用过data-lang。我将阅读更多关于这一点的内容。data-*属性用于定义属性,专门用于存储与它们所属的dom元素相关的数据。在您的情况下,您可以ld创建一个数据lang来存储语言属性,然后可以使用jQuery的.data()或domNode.dataset.langI将“this”作为参数进行访问。谢谢大家!
<img class="repl" data-lang="EN" ... />
<img class="repl" data-lang="FR" ... />
window.onload = function(){// Make sure DOM is ready
    // Get the images
    var imgs = document.getElementsByClassName('repl');

    // Loop over them
    for(var i = 0, len = imgs.length; i < len; i++){
        // Add the event
        imgs[i].addEventListener('mouseover', function(){
            // Get the language. "this" is the element we hovered over
            var lang = this.getAttribute('data-lang');

            var headerText = "";
            if (lang == 'FR') {
                headerText = "Cliquez sur le drapeau"
            } else {
                headerText = "Click on flag"
            }
        });
    }
};