2013-07-12 2 views
-1

Мои проблемы имеют 2 части. 1. Событие onclick не работает. 2. Я хочу изменить текст внутри <div>, предоставив текстовое поле для пользователя, чтобы изменить текст внутри <div>.Изображение onClick не работает

Позвольте мне показать вам мой код, чтобы понять это лучше

HTML:

<div class="img"> 
    <img src="bird-light.png" alt="Klematis" width="110" height="90" onclick="changetext(this)" /> 
<div id="desc" >Add a description of the image by clicking on the bird</div> 
</div> 
<div class="img"> 
    <img src="bird-dark.png" alt="Klematis" width="110" height="90" onclick="changetext(this)" /> 
<div id="desc">Add a description of the image by clicking on the bird </div> 
</div> 

CSS:

div.img{ 
    width:250px; 
    border: 1px solid #0000ff; 
    height: auto; 
    float:left; 
    background-color:#474747; 
    color:#fff; 
} 

JAVASCRIPT:

function changetext(e){  
    alert("hi"); 
    txtarea = document.getElementById('desc'); 
} 

I created a Fiddle

Возврат к ВОПРОСЫ.

  1. По какой-то причине предупреждение о функции JavaScript не выполняется, что означает, что моя функция не запускается.

  2. Я хочу, чтобы пользователь мог редактировать текст внутри <div>. Я имею в виду, когда пользователь нажимает на изображение, он/она должен получить текстовое поле, которое позволяет ему/ей изменять текстовое содержимое <div id="desc">. Можно ли это сделать, используя только JavaScript. Если да, то как?

+0

прежде всего идентификатор должен быть уникальным, иначе нет простого способа получить второй элемент с id desc в вашей скрипке. – bugwheels94

+0

См. Thi s url для редактирования div: http://stackoverflow.com/questions/2441565/how-do-i-make-a-div-element-editable-like-a-textarea-when-i-click-it – Zhanger

ответ

3

Ваш первый не является проблемой, потому что вы используете JSFiddle с «обернуть сценарий в OnLoad», что означает, что функция существует только в том случае OnLoad и недоступен для событий щелчка.

Updated Fiddle, где код оставлен необработанным.

Вы можете сделать что-нибудь с JavaScript, в значительной степени. Принятие ввода пользователем ничего. На самом деле это просто var userinput = prompt("Type something","Default value");, но на самом деле вы хотите изучить некоторые вещи, такие как document.createElement, Element.appendChild и т. Д., Чтобы создать элемент textarea и показать его пользователю.

+0

Ну , Благодарю. можете ли вы направлять меня на ресурс или учебник, который может мне помочь? – AnaMaria

+0

@AnaMaria [Сеть разработчиков Mozilla] (https://developer.mozilla.org/en-US/docs/Web/JavaScript) Хорошее место для изучения. – Praveen

+1

У меня есть это далеко ... http: // jsfiddle.net/qbXcw/10/ – AnaMaria

1

Ваша скрипка работает для меня, если бы я изменить функцию JS, как показано ниже на onLoad:

changetext = function (e) { 
    alert("hi"); 
    var txtarea = document.getElementById('desc'); 
} 

Проверить Jsfiddle

Чтобы изменить содержание в вашей DIV, используйте innerHTML

document.getElementById('desc').innerHTML = "content changed"; 
+0

Прохладный. теперь о второй части моей проблемы. это вызов ... – AnaMaria

+0

@AnaMaria пролить свет на ваш вопрос. Идентификаторы должны быть уникальными, поэтому измените его как 'class =" desc "' в обоих. – Praveen

Смежные вопросы