2013-11-20 2 views
11

Я пытаюсь сделать img, что при нажатии на него вызывается функция JavaScript.img onclick вызов функции JavaScript

Я искал в Интернете, но не нашел ничего, что действительно работает (проблема из-за ошибки, которую я сделал).

Этот код предназначен для передачи переменных JavaScript в приложение C#.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

<script type="text/javascript"> 
     function exportToForm(a,b,c,d,e) { 
      window.external.values(a.value, b.value, c.value, d.value, e.value); 
     } 
    </script> 
</head> 
<body> 
    <img onclick="exportToForm('1.6','55','10','50','1');" src="China-Flag-256.png"/> 
    <button onclick="exportToForm('1.6','55','10','50','1');" style="background-color: #00FFFF">Export</button> 
</body> 
+1

Что вы говорите о своем коде, который не работает? Можете ли вы уточнить? –

+3

Поместите свой javascript-код в

0

Поместите яваскрипту часть и конец непосредственно перед закрытием </body> то он должен работать.

http://jsfiddle.net/Q3Zy3/1/

<img onclick="exportToForm('1.6','55','10','50','1');" src="China-Flag-256.png"/> 
    <button onclick="exportToForm('1.6','55','10','50','1');" style="background-color: #00FFFF">Export</button> 

    <script type="text/javascript"> 
     function exportToForm(a,b,c,d,e) { 
     alert(a + b); 
     window.external.values(a.value, b.value, c.value, d.value, e.value); 
    } 
</script> 
5

Вы, вероятно, следует использовать более unobtrusive подход. Вот преимущества

  • Разделение функциональности («поведение слоя») с веб-страницы структуры/содержания и представления
  • Лучшие практики, чтобы избежать проблем традиционного программирования JavaScript (например, браузер несоответствий и отсутствие масштабируемости)
  • Прогрессивное улучшение для поддержки пользовательских агентов, которые могут не поддерживать расширенные функциональные возможности JavaScript

Here's a jsfiddle demo

Ваш JavaScript

function exportToForm(a, b, c, d, e) { 
    console.log(a, b, c, d, e); 
} 

var images = document.getElementsByTagName("img"); 

for (var i=0, len=images.length, img; i<len; i++) { 
    img = images[i]; 
    img.addEventListener("click", function() { 
    var a = img.getAttribute("data-a"), 
     b = img.getAttribute("data-b"), 
     c = img.getAttribute("data-c"), 
     d = img.getAttribute("data-d"), 
     e = img.getAttribute("data-e"); 

    exportToForm(a, b, c, d, e); 
    }); 
} 

Ваши изображения будут выглядеть следующим образом

<img data-a="1" data-b="2" data-c="3" data-d="4" data-e="5" src="image.jpg"> 
+0

Мне нравится это решение, но для меня это не сработало. Проблема в том, что у вас есть значения переменных последнего значения img. Вы должны привязать значения атрибута к функции. – ChaosSpeeder

0

Ну ваша функция OnClick работает абсолютно нормально его ваша эта линия
window.external.values(a.value, b.value, c.value, d.value, e.value);

window.external İŞ объект и не имеет значений имени метода

<html> 
    <head> 
    <script type="text/javascript"> 
      function exportToForm(a,b,c,d,e) { 
      // window.external.values(a.value, b.value, c.value, d.value, e.value); 
      //use alert to check its working 
     alert("HELLO"); 
} 
     </script> 
    </head> 
    <body> 
     <img onclick="exportToForm('1.6','55','10','50','1');" src="China-Flag-256.png"/> 
     <button onclick="exportToForm('1.6','55','10','50','1');" style="background-color: #00FFFF">Export</button> 
    </body> 

    </html> 
0

В ответ на хорошее решение от maček. Решение не сработало для меня. Мне нужно привязать значения данных к функции экспорта. Это решение работает для меня:

function exportToForm(a, b, c, d, e) { 
    console.log(a, b, c, d, e); 
} 

var images = document.getElementsByTagName("img"); 

for (var i=0, len=images.length, img; i<len; i++) { 
    var img = images[i]; 
    var boundExportToForm = exportToForm.bind(undefined, 
      img.getAttribute("data-a"), 
      img.getAttribute("data-b"), 
      img.getAttribute("data-c"), 
      img.getAttribute("data-d"), 
      img.getAttribute("data-e")) 

    img.addEventListener("click", boundExportToForm); 
    } 
Смежные вопросы