- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否有用户可以添加到 html5 网页的元素?例如,他们是否可以将段落或图像添加到以前不存在的现有网页中?
例如。
<!doctype html>
<html>
<head>
</head>
<body>
<p class=”pClass”>This is in a paragraph.</p>
**//would it be possible for a user to insert several paragraphs here with the click of a button or something?**
</body>
</html>
最佳答案
我做这个可能有点过头了,但我总是喜欢创建这些小例子。这是我想出的。从这个 HTML 开始:
<input type="text" id="txt1" />
<button id="btn1">Add Item</button>
<hr />
<div id="targetArea"></div>
还有这个 CSS:
p.editable input.editor,
p.editable input.action,
p.editable em.escape {
display: none;
}
p.editable input.action {
margin-left: 15px;
}
p.editable em.escape {
margin-left: 10px;
font-size: 8px;
}
p.editable:hover input.action {
display: inline;
}
p.editable.editing span.text {
display: none !important;
}
p.editable.editing input.editor,
p.editable.editing input.action,
p.editable.editing em.escape {
display: inline !important;
}
并使用这个 JavaScript:
var textProp = "textContent" in document.createElement("div") ? "textContent" : "innerText";
function strTrim(str) {
if (!str) {
str = "";
}
return str.replace(/^\s+|\s+$/g, "");
}
function addEvent(element, eventName, callback) {
if (element.addEventListener) {
element.addEventListener(eventName, callback, false);
} else if (element.attachEvent) {
element.attachEvent("on" + eventName, callback);
}
}
function editableClickHandler(e) {
var actionButton, pNode, myText, myEditor;
actionButton = this;
pNode = actionButton.parentNode;
myText = pNode.querySelector("span.text");
myEditor = pNode.querySelector("input.editor");
if (actionButton.value === "Edit") {
actionButton.value = "Done";
pNode.className += " editing";
myEditor.setAttribute("data-original-val", myText[textProp]); // Save current value in case of canceling
myEditor.value = myText[textProp];
} else {
actionButton.value = "Edit";
pNode.className = "editable";
myText[textProp] = myEditor.value;
}
}
function escapeCheckHandler(e) {
var keyCode, pNode, myEditor, myText, myActionButton;
e = e || window.event; // Normalize event
keyCode = e.keyCode || e.which || e.charCode; // Normalize keycode
if (keyCode === 27) { // Escape key
pNode = this.parentNode;
myEditor = pNode.querySelector("input.editor");
myText = pNode.querySelector("span.text");
myActionButton = pNode.querySelector("input.action");
pNode.className = "editable";
myText = myEditor.getAttribute("data-original-val");
myActionButton.value = "Edit";
}
}
function addClickHandler() {
var target, curInput, curInputVal, newP, newText, newEditor, newActionButton, newEscapeInfo;
curInput = document.getElementById("txt1");
curInputVal = strTrim(curInput.value);
if (!curInputVal) {
alert("Must provide actual text");
return;
}
target = document.getElementById("targetArea");
newP = document.createElement("p");
newText = document.createElement("span");
newEditor = document.createElement("input");
newActionButton = document.createElement("input");
newP.className = "editable";
newText.className = "text";
newText[textProp] = curInputVal;
newP.appendChild(newText);
newEditor = document.createElement("input");
newEditor.type = "text";
newEditor.className = "editor";
addEvent(newEditor, "keyup", escapeCheckHandler);
newP.appendChild(newEditor);
newActionButton.type = "button";
newActionButton.className = "action";
newActionButton.value = "Edit";
addEvent(newActionButton, "click", editableClickHandler);
newP.appendChild(newActionButton);
newEscapeInfo = document.createElement("em");
newEscapeInfo.className = "escape";
newEscapeInfo[textProp] = "(Press Escape to Cancel Editing)";
newP.appendChild(newEscapeInfo);
curInput.value = "";
target.insertBefore(newP, target.firstChild);
}
function loadHandler() {
addEvent(document.getElementById("btn1"), "click", addClickHandler);
}
addEvent(window, "load", loadHandler);
演示: http://jsfiddle.net/8K3pN/2/
addEvent
的使用有助于跨浏览器更一致地绑定(bind)事件处理程序。
总的来说,当您填写文本框并单击按钮时,它会添加一个 <p>
(带有一些子元素)到目标区域。取决于 p
的状态,某些东西被隐藏/显示(使用 CSS)。根据单击按钮的状态(编辑/完成),某些事情会发生。我添加了按 Escape 键“取消”编辑的功能(而不是添加另一个按钮)。
同样,我知道这可能太多了,但我希望这能帮助您了解这一切如何协同工作!
关于javascript - 让用户在网页上创建更多元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376776/
这个问题与窗口处理或多个浏览器窗口的杂耍无关,而是关于在同一窗口中浏览 Web 应用程序的网页。我遇到这样的情况 1.我导航为屏幕 A->屏幕 x->屏幕 Y->屏幕 B 2.我需要捕获首次登录时屏幕
我有这个要求: The system will record the length of time the user displayed each page. 虽然在富客户端应用程序中微不足道,但我不
我在调试 JavaScript 网页时遇到问题。我遇到困难的地方是我标记 (...) 的地方。我收到未定义的错误。我是否将函数 countDown(start, Increment) 中的参数(即 s
需要一些帮助。我刚开始学习 HTML,今天一直在研究如何制作菜单,但在这样做时遇到了问题。 我似乎不知道如何在屏幕上居中显示菜单。 这就是我目前所拥有的; Home
我想通过单击按钮将小程序的任何参数发送到浏览器。 (HTML)。我知道按钮对象有一些方法,但不知道使用哪个。我怎样才能做到这一点?ps .: 我使用的是 jnlp 协议(protocol)。 类似于:
我应该使用Wikipedia的文章链接数据转储从组织的网站中提取代表性术语。 为此,我已经- 抓取并下载了该组织的网页。 (〜110,000) 创建了Wikipedia ID和术语/标题的字典。 (约
我的网页中包含 javascript 函数... function callFromAndroid(varName) { alert("call from android activated by
我想创建一个 Java 应用程序,允许用户导入网页并能够在程序中对其进行编辑。 导入网页将对其进行渲染,并且页面的组件(图像、文本等)将是可编辑或可拖动的,从而允许用户重新布局组件。 例如,用户可以加
当我们按下按钮时,我向 JFrame 添加了一个网页(网页在同一框架中打开)。效果很好。但我想向其中添加一个scrollPane,但是当我添加 JScrollPane jsp = new JScrol
我在使用 particles.js 时无法将图像居中。图像居中,但略微偏离中心。为什么要这样做,我如何才能将它居中? html particles.js demo CSS
我正在尝试在加载页面时播放音频,它应该非常简单但我无法完成。 问题是它没有播放,我尝试检查自动播放的状态(真/假),它说它在页面加载时播放,尽管它没有播放,还尝试制作一个将改变自动播放的功能状态为
我正在尝试显示用户从列表中选择的图像,但我在屏幕上看不到任何内容。 .container { position: relative; } .ce
这听起来有点奇怪,但我需要一些帮助,网页必须有一行必须包含三个部分,第一部分必须有 1 列的偏移量,并且部分之间的空间必须是 10px到目前为止,使用 Bootstrap 一切顺利。 现在第二行将有
这个问题在这里已经有了答案: Web and physical units (2 个答案) Div width in cm (inch) (6 个答案) 关闭 9 年前。
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我想将我的 IPython 笔记本的宽度设置为 2500 像素,并且我希望它左对齐。我该怎么做? 我使用这段代码来应用我自己的 CSS: from IPython.core.display impor
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this q
我在 Word 中制作了一份文档,希望人们在其中添加自己的姓名以及他们的教学经验。我已将其保存为网页并发布到此处: http://epicforum.net/TS ...但操作部分实际上就是这样: h
这个问题在这里已经有了答案: Execute JS code after pressing the spacebar (5 个答案) 关闭 4 年前。
我正在开发一个只有两个页面的网站。 1.登录 2.首页 我正在使用 Angular 框架。 app.config(['$routeProvider', function ($routeProvider
我是一名优秀的程序员,十分优秀!