javascript - HTML/JS 中的弹出窗口只需点击两次即可弹出

标签 javascript html css

我正在编写一个非常简单的 HTML/JS 代码来“弹出”字典条目,这只是一个非常基本的“维基百科引用资料”。有一些问题,否则我不会打扰 :) 顺便说一句,我在 HTML/CSS/JS 方面不是很熟练,这可能是我正在做的一些非常愚蠢的事情!

第一个也是最重要的问题:弹出窗口有效,但是在单击两次 之后。我真的不知道为什么。第一次点击没有任何反应,第二次点击正确地显示了我的弹出框。

第二个问题是可选的,真的。就是这样:框出现在屏幕的左侧。是否可以将它们放在我正在单击的链接下?当然,与链接位置无关。

注意:我现在使用的是 span,但使用链接没有任何不同。

谢谢和干杯!

HTML:

<p class="text">
The text will contain dictionary entries, as an example, the
<span class="dict" onclick="showHide('thekey')">following entry</span>.
<span class="entry" id="thekey">
Lorem ipsum dolorem sit amet. Lorem ipsum dolorem sit amet. Lorem ipsum dolorem sit amet. Lorem ipsum dolorem sit amet. Lorem ipsum dolorem sit amet. Lorem ipsum dolorem sit amet. Lorem ipsum dolorem sit amet. Lorem ipsum dolorem sit amet. 
</span>
</p>

CSS:

.dict {
    display: inline;
    padding-left: 4px;
    padding-right: 4px;
    background-color: #f69292;
    color: white;
    font-family: Arial, Helvetica, sans-serif;
}

.entry {
    position: absolute;
    display: none;
    padding-left: 10px;
    padding-right: 10px;
    padding-top: 20px;
    padding-bottom: 10px;
    margin-left: 100px;
    color: white;
    min-height: 128px;
    width: 400px;
    background-color: #ff8080;
    border: 1px solid red;
    line-height: 1.2em;
    font-family: Arial, Helvetica, sans-serif;
    }

JavaScript:

// Show or hide a dictionary
function showHide(id)
{
    var e = document.getElementById(id);

    if (e.style.display == 'none')
        e.style.display = 'block';
    else
        e.style.display = 'none';
}

最佳答案

单击一次不起作用的原因是因为以下代码:

if (e.style.display == 'none')
    e.style.display = 'block';
else
    e.style.display = 'none';

它所做的是检查元素的内联样式的值。因为,你已经使用了一个类,它并没有完全给你值(value),而是以空白结束。所以你可以把它改成这样:

if (e.style.display == 'none' || e.style.display == '') {
    e.style.display = 'block';
}
else {
    e.style.display = 'none';
}

你可以在这里看到这个-> http://jsfiddle.net/W9fqb/1/

关于你问题的第二部分,如果你想把它们放在下一行 那么 position:relative 可以帮助你。但是,由于您希望将它们放在链接下(如工具提示),因此您可以使用第三方工具来节省大量时间和精力(例如 Tooltipster)。

更新:

只是为了展示如何使用 Tooltipster 来实现您想要的输出:http://jsfiddle.net/W9fqb/2/

注意: 目前这在 hover 上有效,但如果你看到他们的文档,你将能够通过单击鼠标实现这一点,这就是方式你想要的。

希望这有帮助!!!

关于javascript - HTML/JS 中的弹出窗口只需点击两次即可弹出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24368035/

相关文章:

javascript - 将 $.each 和 $.getJSON 转换为 vanilla javascript

javascript - ReactJS 通过 API 调用保护路由

并非所有事件都调用 JavaScript 函数

javascript - 子 div 在更改时未正确调整大小

javascript - 如何找到被单击的元素的 ID?

javascript - jQuery - 下一个(元素)不工作

javascript - 如何在 asp.net mvc 中重复表单控件并将它们作为列表传递给 Controller

html - table td 在底部留下不需要的空间

jquery - 可以使用 jQuery 更改元素的宽度来修改另一个元素的字体大小吗?

jquery - 顶部抽屉导航菜单切换向下推送内容并显示事件链接