#php #javascript #drupal #html
#php #javascript #drupal #HTML
Вопрос:
Я пытаюсь получить значение моего div в Javascript. Это веб-сайт Drupal, и я хочу конвертировать валюты и отображать их во всплывающем окне javascript.
Пока у меня есть это:
<?php
print "<script type='text/javascript'>";
$rate=currency_api_convert("HKD", "CNY");
print "exchangerate = ".$rate["value"].";";
print "var $displaycur = getElementById('record-price');";
print "$displaycur;";
print "</script>";
?>
И все, что я получаю в своих браузерах, это:
<script type="text/javascript">
exchangerate = 0.8406;var = getElementById('record-price');;
</script>
Хотя я знаю причину, по которой это отображается таким образом, я все еще не знаю, как получить идентификатор div в соответствующей переменной.
Есть идеи? Должен ли я использовать innerHTML?
ОБНОВЛЕНИЕ: Часть исходных файлов: page.tpl.php
<?php
// $Id: page.tpl.php,v 1.18.2.1 2009/04/30 00:13:31 goba Exp $
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php print $language->language ?>" lang="<?php print $language->language ?>" dir="<?php print $language->dir ?>">
<head>
<?php print $head ?>
<title><?php print $head_title ?></title>
<?php print $styles ?>
<?php print $scripts ?>
<?php
// lets get the exchange rate from HKD to RMB, with the help of yahoo finance api and the currency api module
// we pass the value to javascript, the tooltip will handle the rest
print "<script type='text/javascript'>";
$rate=currency_api_convert("HKD", "CNY");
print "exchangerate = ".$rate["value"].";";
print "</script>";
?>
<script type="text/javascript">
function showCurrency() {
alert('$rate');
}
</script>
<!--[if lte IE 7]>
<?php print phptemplate_get_ie_styles(); ?>
<![endif]-->
<!--[if IE 6]>
<style type="text/css">
.fg-menu-ipod .fg-menu li { width: 95%; }
.fg-menu-ipod .ui-widget-content { border:0; }
.views-field-field-performer-value { margin-left:-150px;}
.views-field-field-instruments-value { margin-left:-150px;}
.coda-nav{display:block; position:absolute; width:400px;height:20px;top:260px;right:100px;z-index:125421;} </style>
<![endif]-->
</head>
<body<?php print phptemplate_body_class($left, $right); ?>>
И node-record.tpl.php:
print '<div id="part1-right-line3">';
print '<div id="record-price">';
print uc_currency_format($node->sell_price);
print '</div>';
print '</div>';
print '<div id="part1-right-line4">';
print '<div id="add-to-cart">';
print drupal_get_form('uc_product_add_to_cart_form_'. $node->nid, $node);
print '</div>';
print '</div>';
print '</div>';
И вот результат:
Пожалуйста, скажите мне, нужно ли вам больше, потому что есть 🙂
Заранее спасибо
Комментарии:
1. Я крайне смущен этим:
var = getElementById('record-price');;
2. Спасибо за ваши комментарии, я хочу поместить значение div внутрь переменной, чтобы я мог использовать это для конвертации валюты
Ответ №1:
<?php
print "<script type='text/javascript'>n";
$rate=currency_api_convert("HKD", "CNY");
print "exchangerate = ".$rate["value"].";n";
print "var displaycur = document.getElementById('record-price');n";
print "alert(displaycur.innerHTML);n";
print "</script>n";
?>
Я предполагаю, что ‘record-price’ — это идентификатор вашего DIV … поэтому displaycur.innerHTML
будет все между <div>
и </div>
.
Редактировать:
function showCurrency() {
alert(document.getElementById('record-price').innerHTML);
}
Комментарии:
1. Да, ‘record-price’ действительно является идентификатором DIV. Когда я заменил свой код на ваш, я получаю
missing variable name
ошибку:2. @Michiel — могу ли я увидеть полный вывод онлайн?
3. @Michiel — Может быть, вы можете указать исходный код в своем первоначальном вопросе? Мне это очень любопытно.
4. Милая, ты можешь найти это здесь , и я добавлю код в свой первоначальный вопрос!
5. @Michiel — Теперь он правильно считывает значение DIV. Удалите этот гребаный комментарий, пожалуйста 🙂
Ответ №2:
Вы определили $displaycur
в своем PHP-коде? Кроме того, это должно быть document.getElementById
.
Обновление: Все, что вам нужно от PHP, — это обменный курс. Все остальное вы можете делать на JavaScript:
<script type="text/javascript">
var exchangerate = <?php echo currency_api_convert("HKD", "CNY"); ?>;
var div = document.getElementById('record-price');
var price = parseInt(div.innerHTML);
// convert and display
alert(price * exchangerate);
</script>
Комментарии:
1. Спасибо! Нет, я раньше не определял это в своем PHP-коде. Должен ли я делать это внутри javascript?
2. @Michiel: PHP считает
$displaycur
переменной и подставляет ее значение в вывод. Если это не было предназначено, вам следует удалить$
знак или экранировать его.3. Я просто хочу поместить значение div внутри переменной, чтобы я мог преобразовать его. Но поскольку это Drupal (php), я должен сделать это вот так, нет?
4. @casablance, спасибо за твой ответ, но я продолжаю получать ошибки (
div is null
-error). И в моем коде я получаюvar exchangerate = Array
5. @Michiel, ну, тогда что-то не так с твоим DIV;
'div is null'
ошибка!? Вы можете видеть этот DIV в исходном коде? В моем примере у вас'missing variable name'
ошибка, поэтому я предполагаю, что проблема в DIV.