【问题标题】:Issue with getting focus [closed]获得焦点的问题[关闭]
【发布时间】:2016-11-11 01:55:37
【问题描述】:

如果用户单击指定 div 元素内的任何位置,我正在尝试更改 img。什么都没有发生,我知道一定有问题。

到目前为止我有这个

setInterval("myFunction()", 1);

function myFunction() {
 
    if document.getElementById("demo").hasFocus; {
        document.getElementById('pic1').src='https://pbs.twimg.com/profile_images/701853789855346689/iKxIyGkO.png';
    } else {
        document.getElementById('pic1').src='https://pbs.twimg.com/profile_images/688766010837446657/2DgfpAQ6.png';
    }
}
<div style="border-style: solid;height:20px;" id="demo"></div>

<img id="pic1" src="https://pbs.twimg.com/profile_images/688766010837446657/2DgfpAQ6.png">

【问题讨论】:

  • 这不是有效的 javascript
  • 给 div 一个宽度
  • @DanielA.White 谢谢丹尼尔的帮助。
  • 验证您的代码,然后编辑您的帖子。
  • @skav 没关系,伙计。

标签: javascript html if-statement src


【解决方案1】:

不确定我是否正确地尝试了您正在尝试做的事情。你可以在这里看到一个工作代码:

您的代码中有一些拼写错误,并且错过了 if 条件的括号

var demo = document.getElementById('demo');
demo.addEventListener('click', myFunction, false);

function myFunction() {

  if (document.getElementById("demo") === document.activeElement) {
    document.getElementById('pic1').src = 'https://pbs.twimg.com/profile_images/701853789855346689/iKxIyGkO.png';
  } else {
    document.getElementById('pic1').src = 'https://screenshots.fr.sftcdn.net/fr/scrn/76000/76818/microsoft-small-basic-22.jpg';
  }
}
<div style="border-style: solid;height:20px;" id="demo"></div>

<img id="pic1" src="https://pbs.twimg.com/profile_images/688766010837446657/2DgfpAQ6.png">

【讨论】:

  • 你没有提到最重要的部分,document.activeElement
  • 就是这样!你使用了我看到的onclick。谢谢。
  • 不客气。如果您的问题解决了,您可以接受我的回答。您还应该按照 Juan Mendes 的建议阅读 activeElement 的文档:developer.mozilla.org/en-US/docs/Web/API/Document/activeElement
  • @Lau 问题,那个js中设置的第一个图像src没有被使用?我知道它和原来的 html img 标签是同一张图片。
【解决方案2】:

请检查其他部分。 ocument.getElementById('pic1').src 中的文档缺少 d

【讨论】:

  • 这是其中的两个..
  • @L3SAN 你又在 if 条件下犯了一个错误。 ; 不应该在那里。请编辑它。 if document.getElementById("demo").hasFocus; {
  • if (document.getElementById("demo").hasFocus) 是正确的。
【解决方案3】:

if 上计算的条件必须在括号内,并且后面不能有分号:

if (document.getElementById("demo").hasFocus)
{ // do something }

这是您需要更改的第一件事,因为这甚至不是有效的 javascript。分号表示语句的结束。

在你解决这个问题之后,你是说必须有一个 div 上的点击事件的处理程序。默认情况下,div 不是“可聚焦”的,您需要将其 tabindex 属性设置为 1。

另外,如果你想对点击做出反应,你必须添加一个事件监听器!

someHTMLElement.addEventListener('click', function_to_execute_onclick)

还是只需要在 div 获得焦点时才对点击事件做出反应?

编辑: 好吧,你只需要一个按钮!

<img id = "pic">
<button id = 'play'>Play</button>

还有 JS:

const img = document.getElementById('pic');

function changePicture ()
{ img.src = 'some/pic.jpg'
  // do more stuff on click.
}

document.getElementById('play')
        .addEventListener('click', changePicture);

【讨论】:

  • 我不知道 div 没有焦点状态。基本上我想要完成的是:我有一个 mp3 音频播放器,如果用户点击播放,专辑封面将显示在页面的其他位置。
  • 如果您将tabindex 属性设置为1,它们可以成为焦点:) 然后您需要在按钮上添加点击事件!我将编辑我的答案。
  • 这是奇怪的事情,我正在使用 adobe muse 来创建它。我添加了 mp3 小部件。现在,当我打开 html 文件时,我看到了该音频小部件的 id,但仅此而已。没有其他的。现在,当我右键单击发布它的页面并选择检查元素时,我转到那个 id,我看到更多元素,比如实际的按钮标签,很奇怪吧?
  • 我没有使用 Adob​​e Muse,但是如果您没有足够的经验编写自己的 html,则不应该使用它。另外,我不知道哪些“额外”代码可能会将其添加到网络标记中。保持简单,制作自己的简单页面。
  • 你可以在这里看到它:lesantest.comuf.com/sunshine%20Productions/player.html 现在,如果你查看代码,你会注意到
猜你喜欢
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多