Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Как правильно показать условие (https://javascript.ru/forum/css-html/68568-kak-pravilno-pokazat-uslovie.html)

atanov 24.04.2017 12:45

Как правильно показать условие
 
Вот такая задача - выводиться таблица, в которой в некоторых тегах есть текст. Этот текст берётся как обычно
var variable = [id тега].innerHTML;
, потом помещается во фрейм для работы с ним. Проходит это всё вполне нормально. Однако в некоторых тегах ничего нет, т.е. в разметке <td></td>. Ожидаемо ничего во фрейм не попадает и консоль выдаёт ошибку: Cannot read property 'innerHTML' of null. Пробовал поставить условие - при "пустоте", присвоить:
var variable = '0';
. Однако не помогло, также как и перебор вариантов в условии:
if (variable !== ' '||variable !== " "||variable !==''||variable !==""||variable !==null){var variable = '0';}
.

Есть мысли, что ещё попробовать для правильного задания искомого условия?

Dilettante_Pro 24.04.2017 12:56

atanov,
А можно примеры таблицы и скрипта - вместо
Цитата:

Сообщение от atanov
как обычно
var variable = [id тега].innerHTML;


atanov 24.04.2017 13:20

Весь код большой, выдёргиваю интересующие куски:

mysql_connect($host, $user, $password) or die("Cannot connect to  MySQL.");
mysql_select_db($database) or die("Cannot connect to the base.");
$sql = "SELECT * FROM `table-1` .`Number` ASC LIMIT 0, 10000 ";
$result = mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_assoc($result))
{
echo '<table class = table-ms>';
echo '<td class = tdnumber>'.$row['Number'].'</td>'; 
echo '<td class = tdQ>'.htmlspecialchars_decode($row['Ol']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['Des']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['QPA']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['QBP']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['QFP']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['QBM']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['QRU']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['QFF']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['CH']).'</td>';
echo '<td class = tdQ>'.htmlspecialchars_decode($row['SE']).'</td>';
echo '</table>';
}


var con = el.innerHTML;
if (con == ' '||con ==" "||con ==''||con ==""||con ==null){var con = '0';}else{}

Dilettante_Pro 24.04.2017 13:28

atanov,
А что такое el в скрипте?

И еще - хорошо бы не php-код формирования таблицы, из которого еще неизвестно, что получится, а пример сформированной таблицы с клиента

atanov 24.04.2017 14:16

Dilettante_Pro

el в скрипте присваивается так:

document.onclick = function mettrenom(e) {
e = e || window.event;
var el = e.target || e.srcElement;


т.е. el это элемент по которому кликнули.

А как сюда таблицу вставить с клиента? В общем-то она простая, но большая - почти 500 строк и 7 колонок.

atanov 24.04.2017 14:46

Вопрос решился не совсем ожидаемо - нужно было указать тождественно равно:
con ===''

Dilettante_Pro 24.04.2017 15:09

atanov,

Очень странно, что проблема решилась таким образом, учитывая тот факт, что ошибка Cannot read property 'innerHTML' of null относилась не к проверке полученного значения, а к операции получения значения
var con = el.innerHTML;

Есть подозрение, что это было связано с областью видимости переменной el

PS:
Строго равно (===)
Оператор возвращает true в том случае, если операнды строго равны (одного типа и равны). В отличие от оператора ==, данный оператор не приводит операнды к одному типу.


Часовой пояс GMT +3, время: 18:43.